numpy 当我尝试用where()方法在一维数组中查找偶数时,它返回奇数,为什么?

goucqfw6  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(109)

我正在做numpy,当我在我的编辑器上尝试numpy方法时,我注意到了一个不正常的情况。
首先,我创建了一个numpy数组(nd.array),如下所示:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

在那之后,我试着从数组中得到偶数,我写了这行代码:

even_numbers_in_array = np.where(arr%2 == 0)

我想它应该返回一个包含偶数的元组,但它返回的结果正好相反:

In [33]: even_numbers_in_array
Out[33]: (array([ 1,  3,  5,  7,  9, 11], dtype=int64),)

在这个结果之后,我感到震惊,因为即使没有在数组中,也有91011的值。有人能给我解释一下这个奇怪的情况吗?
谢谢
我使用spyder(anaconda3)编辑器和w11操作系统

bvn4nwqk

bvn4nwqk1#

您不需要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])

相关问题