我有一个像这样的简单的二维 numpy 数组
array([[1, 0, 1],
[1, 1, 0],
[0, 1, 1],
[0, 0, 0],
[1, 0, 0]])
我想做的是将数组的每一行自身相乘以形成一个 3d 数组,(这样 1*1 = 1
和其他任何内容都将是 0
,本质上是一个 and
函数):
array([[[1,0,1],[1,0,0],[0,0,1],[0,0,0],[1,0,0]],
[[1,0,0],[1,1,0],[0,1,0],[0,0,0],[1,0,0]],
...,
...,
...])
最佳答案
事实证明答案非常简单。如果数组是x
:
x[np.newaxis,:,:]*x[:,np.newaxis,:]
这适用于逻辑表达式等内容,如果您只想比较每行中的相同元素,您可以执行以下操作:
np.logical_not(np.logical_xor(x[np.newaxis,:,:], x[:,np.newaxis,:]))
这将返回:
array([[[ True, True, True],
[ True, False, False],
[False, False, True],
[False, True, False],
[ True, True, False]],
[[ True, False, False],
[ True, True, True],
[False, True, False],
[False, False, True],
[ True, False, True]],
...,
...,
...], dtype=bool)
关于python - 将 2d numpy 数组与其自身进行比较以形成 3d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107837/