我有两个3x3阵列。其中一个表示一个元素是黑色的(让我们说0' s - 白色,1'黑色)和另一个元素的成本是多少。有没有一种很好的方法来获取例如所有黑色元素的指数并且它们的价格高于某个值?我知道我可以使用np.where()从一个数组中选择,但如何在两个数组中进行选择(如果它们具有相同的形状)
答案 0 :(得分:2)
根据Psidom和rayryeng的建议,我将补充说np.where
的输出可以堆叠在一起,以便在可读的#34;坐标"中显示索引列表。符号,如下所示
import numpy as np
a = np.random.randint(0, 2, size=(3,3))
b = np.random.uniform(0, 10, size=(3,3))
print(a)
print(b)
print(np.where(a & (b > 4)))
print(np.vstack(np.where(a & (b > 4))).T)
随机数组a
和b
:
[[1 0 0]
[1 1 0]
[0 1 1]]
[[ 4.27082885 4.95718491 5.03538203]
[ 8.41593579 3.17425233 3.99337567]
[ 3.90636291 4.96133978 3.61849744]]
直接输出np.where
两个条件a
非零和b>4
:
(array([0, 1, 2], dtype=int64), array([0, 0, 1], dtype=int64))
以人性化的方式堆叠:
[[0 0]
[1 0]
[2 1]]