我正在研究 numpy,当我在我的编辑器上尝试 numpy 方法时,我注意到我的情况不正常。
首先,我创建了一个像这样的 numpy 数组(nd.array):
import numpy as np
np.array([1, 2, 3, 4, 5, 6, 7, 8])
之后,我尝试从数组中获取偶数,并编写了以下代码行:
even_numbers_in_array = np.where(arr%2 == 0)
我认为它应该返回一个包含偶数的元组,但它返回的是相反的:
In [33]: even_numbers_in_array
Out[33]: (array([ 1, 3, 5, 7, 9, 10, 11], dtype=int64),)
看到这个结果,我惊呆了,因为即使不在数组中,也有9,10,11个值。 谁能给我解释一下那个奇怪的情况?
谢谢
我使用spyder(anaconda3)编辑器和w11操作系统
你不需要
np.where
:
>>> arr[arr % 2 == 0]
array([2, 4, 6, 8])
注意:
np.where
返回索引而不是数字本身。
>>> arr[np.where(arr % 2 == 0)[0]]
array([2, 4, 6, 8])
你很困惑,因为你使用了一个特定的数组
[1, 2, 3, 4, 5, 6, 7, 8]
。尝试另一个系列:
arr = np.array([11, 12, 13, 14, 15, 16, 17, 18])
>>> np.where(arr % 2 == 0)
(array([1, 3, 5, 7]),)
>>> arr[arr % 2 == 0]
array([12, 14, 16, 18])