Numpy 2d数组,选择满足2个数组条件的索引

时间:2017-07-18 15:18:32

标签: python arrays numpy

我有两个3x3阵列。其中一个表示一个元素是黑色的(让我们说0' s - 白色,1'黑色)和另一个元素的成本是多少。有没有一种很好的方法来获取例如所有黑色元素的指数并且它们的价格高于某个值?我知道我可以使用np.where()从一个数组中选择,但如何在两个数组中进行选择(如果它们具有相同的形状)

1 个答案:

答案 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)

随机数组ab

[[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]]