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

Python Numpy 2d数组,从2个数组中选择满足条件的索引,python,arrays,numpy,Python,Arrays,Numpy,我有两个3x3阵列。其中一个表示一个元素是否为黑色(比如0为白色,1为黑色),另一个表示一个元素的成本。是否有一个很好的方法来获取所有元素的指数,例如黑色元素,它们的价格高于某个值?我知道我可以使用np.where()从一个数组中进行选择,但是如何在两个数组中进行选择(如果它们具有相同的形状)根据Psidom和rayryeng的建议,我将添加np.where的输出可以堆叠,以可读的“坐标”表示法显示索引列表,如下所示 import numpy as np a = np.random.randin

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

根据Psidom和rayryeng的建议,我将添加
np.where
的输出可以堆叠,以可读的“坐标”表示法显示索引列表,如下所示

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的直接输出。其中
对于两种条件
a
非零和
b>4

(array([0, 1, 2], dtype=int64), array([0, 0, 1], dtype=int64))
以人性化的方式堆放:

[[0 0]
 [1 0]
 [2 1]]

根据Psidom和rayryeng的建议,我将添加
np.where
的输出可以堆叠起来,以可读的“坐标”表示法显示索引列表,如下所示

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的直接输出。其中
对于两种条件
a
非零和
b>4

(array([0, 1, 2], dtype=int64), array([0, 0, 1], dtype=int64))
以人性化的方式堆放:

[[0 0]
 [1 0]
 [2 1]]

在本例中,您可以对数组求和,找到2Or
np的所有实例。其中(a&b)
这只是一个示例,说明了我想要实现的目标,我将对其进行更改。@zlenyk Psidom的注释仍然有效。只需将
b
更改为
b>val
np.where(a&(b>val))
。在本例中,您可以对数组求和,并找到2Or
np的所有实例。where(a&b)
这只是一个说明我想要实现的示例,我将对其进行更改。@zlenyk Psidom的评论仍然有效。只需将
b
更改为
b>val
np.where(a&(b>val))