我在尝试一个numpy作业时,发现了一些奇怪的现象,无法理解其原因。
问题:将数组arr中的所有奇数替换为-1。
需要替换的数组 -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
结果 -> array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])
我尝试了以下语法:
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #这里出了什么问题?np.where(arr%2==0,arr,-1)
输出结果奇怪地是array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])
这正是我想要的结果,但请注意where条件?我错误地写了选择偶数元素的条件,但不知为何它选择了奇数元素。
我尝试用argwhere做了同样的事情:
arr[np.argwhere((arr%2!=0))] = -1
它给出了预期的结果。那么,np.where出了什么问题呢?
回答:
numpy.where中的第一个参数(条件)指示如果为True,则保持元素不变。
如果条件为false,则使用numpy.where中提到的第三个参数对元素进行操作。所以你所经历的行为是正确的。
请参考Numpy文档中给出的示例 @https://numpy.org/doc/stable/reference/generated/numpy.where.html 你也可以参考 https://www.journaldev.com/37898/python-numpy-where