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

问题描述 投票:0回答:1

我正在研究 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操作系统

python numpy numpy-ndarray
1个回答
-1
投票

你不需要

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])
© www.soinside.com 2019 - 2024. All rights reserved.