我对numpy功能感到困惑np.where()。例如,如果我们有:
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输出两个数组,但二维数组可能是原因。但是,每个数组包含十个元素;这是怎么来的?
b
np.where
来自的文档numpy.where:
numpy.where
当仅提供条件时,此函数是 np.asarray(condition).nonzero(). 直接使用nonzero应该是首选,因为它对子类的行为是正确的。本文档的其余部分仅涵盖提供所有三个参数的情况。
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给出行和列中非零元素的索引.
np.nonzero