我有一个像这样的简单的2d 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]],
...,
...,
...])
答案 0 :(得分:1)
事实证明答案很简单。如果数组是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)