1

我有一个尺寸为(10x10)的数组,我想创建另一个(10x10)。假设第一个称为 A,第二个称为 B。如果 A 的值分别为零,我希望 B 具有 0 值,或者如果 A 的值不为零,则另一个值(由我指定)让我们说 c。

类似的东西

B[i] = A[i] == 0 ? 0 : c

这可以通过 numpy 自动完成吗?像这样:

B = A == 0 ? 0:c

还是我必须逐个元素遍历数组?

编辑以获取更多信息:

我有一个 numpy Array(10x10) A 和一个 B 相同的尺寸。我创建了另一个

dif = A-B

现在A有零个元素,B有两个,ergo dif有一些零个元素

我想创建另一个 C numpy 数组,其中如果 A 的元素为零,则 C 中的值将为零,但如果不是,则值将是 dif/A(元素的除法)

4

1 回答 1

3

您可以使用np.where

>>> A
array([[3, 2, 0, 3],
       [0, 3, 3, 0],
       [3, 1, 1, 0],
       [2, 1, 3, 1]])

>>> np.where(A==0, 0, 5)
array([[5, 5, 0, 5],
       [0, 5, 5, 0],
       [5, 5, 5, 0],
       [5, 5, 5, 5]])

这基本上说明了A==0放置 0 的位置,否则放置 5。第二个和第三个参数可以是多维数组,只要它们与您的掩码匹配相同的维度即可。

C
array([[7, 8, 8, 6],
       [5, 7, 5, 5],
       [6, 9, 9, 9],
       [9, 7, 5, 8]])

np.where(A==0 ,0, C)
array([[7, 8, 0, 6],
       [0, 7, 5, 0],
       [6, 9, 9, 0],
       [9, 7, 5, 8]])

D
array([[145, 179, 123, 129],
       [173, 156, 108, 130],
       [186, 162, 157, 197],
       [178, 160, 176, 103]])

np.where(A==0, D, C)
array([[  7,   8, 123,   6],
       [173,   7,   5, 130],
       [  6,   9,   9, 197],
       [  9,   7,   5,   8]])
于 2013-10-31T15:32:11.653 回答