我有一个尺寸为(10x10)的数组,我想创建另一个(10x10)。假设第一个被称为A而第二个被称为B.如果A的值分别为零,或者另一个值(由我指定),如果A的值不为零,则我希望B具有0值。
类似的东西
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(元素的除法)
答案 0 :(得分: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]])