一尘不染

为什么 numpy.where() 返回 2 个数组?

py

我对numpy功能感到困惑np.where()。例如,如果我们有:

b = np.array([[1, 2, 3, 4, 5,6], [1,0,3,0,9,6]])
f = np.where(b)

输出

print(f)
(array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1]), array([0, 1, 2, 3, 4, 5, 0, 2, 4, 5]))

这里,数组b包含 2 行和6列。我不确定为什么np.where输出两个数组,但二维数组可能是原因。但是,每个数组包含十个元素;这是怎么来的?


阅读 89

收藏
2023-01-27

共1个答案

一尘不染

来自的文档numpy.where

当仅提供条件时,此函数是 np.asarray(condition).nonzero(). 直接使用nonzero应该是首选,因为它对子类的行为是正确的。本文档的其余部分仅涵盖提供所有三个参数的情况。

b = np.array([[1, 2, 3, 4, 5,6], [1,0,3,0,9,6]])
f = np.where(b) # b.nonzero()

r,c = b.nonzero()
print(r)
>> array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
print(c)
>>array([0, 1, 2, 3, 4, 5, 0, 2, 4, 5])

np.nonzero给出行和列中非零元素的索引.

2023-01-27