Python 将2d numpy阵列与自身进行比较,形成3d阵列
我有一个简单的2d numpy数组,如下所示Python 将2d numpy阵列与自身进行比较,形成3d阵列,python,numpy,Python,Numpy,我有一个简单的2d numpy数组,如下所示 array([[1, 0, 1], [1, 1, 0], [0, 1, 1], [0, 0, 0], [1, 0, 0]]) 我想做的是将数组中的每一行相乘,形成一个3d数组(这样1*1=1和其他任何东西都将是0,本质上是一个和函数): 结果证明答案很简单。如果数组是x: x[np.newaxis,:,:]*x[:,np.newaxis,:] 这适用于逻辑表达式,如果您只想比较每行中相同的元
array([[1, 0, 1],
[1, 1, 0],
[0, 1, 1],
[0, 0, 0],
[1, 0, 0]])
我想做的是将数组中的每一行相乘,形成一个3d数组(这样1*1=1
和其他任何东西都将是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)
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)