我有两个2d numpy数组:
X2d = np.array([[0,4,5,0],
[7,8,4,3],
[0,0,9,8]])
Y2d = np.array([[1,0,4,8],
[0,3,8,5],
[0,6,0,8]])
#and I would like to get these two:
X2dresult = np.array([[0,0,5,0],
[0,8,4,3],
[0,0,0,8]])
Y2dresult = np.array([[0,0,4,0],
[0,3,8,5],
[0,0,0,8]])
因此,基本上我需要保持两个矩阵都大于0的那些位置。我可以使用numpy.where函数或类似的东西来获得这些结果吗?谢谢
您可以使用按位与或或,numpy.where
为此:
>>> X2d = np.array([[0,4,5,0],
... [7,8,4,3],
... [0,0,9,8]])
>>>
>>> Y2d = np.array([[1,0,4,8],
... [0,3,8,5],
... [0,6,0,8]])
>>> indices = np.where(~((X2d > 0) & (Y2d > 0)))
>>> X2d[indices] = 0
>>> Y2d[indices] = 0
>>> X2d
array([[0, 0, 5, 0],
[0, 8, 4, 3],
[0, 0, 0, 8]])
>>> Y2d
array([[0, 0, 4, 0],
[0, 3, 8, 5],
[0, 0, 0, 8]])
我认为按位OR
阅读更好,更清晰:
>>> X2d = np.array([[0,4,5,0],
... [7,8,4,3],
... [0,0,9,8]])
>>>
>>> Y2d = np.array([[1,0,4,8],
... [0,3,8,5],
... [0,6,0,8]])
>>> indices = np.where((X2d == 0) | (Y2d == 0))
>>> X2d[indices] = 0
>>> Y2d[indices] = 0
>>> X2d
array([[0, 0, 5, 0],
[0, 8, 4, 3],
[0, 0, 0, 8]])
>>> Y2d
array([[0, 0, 4, 0],
[0, 3, 8, 5],
[0, 0, 0, 8]])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句