所有Numpy专家,对于你们来说,这可能很简单。这个问题应该存在,但我没有找到确切解决的方法。 Comparing two matrices row-wise by occurrence in NumPy和Numpy compare array to multiple scalars at once类似,但不完全相同。
我需要为多维数组计算numpy.array_equal
,但是我很确定我不需要使用双for循环。但是,如果我使用双for循环进行计算,它将如下所示:
M = numpy.array(
[
[
[1,2,3],
[1,3,4]
],
[
[3,4,5],
[1,2,3]
],
[
[1,2,3],
[1,3,4]
]
])
result = np.zeros((M.shape[0], M.shape[0]))
for i in range(M.shape[0]):
for j in range(M.shape[0]):
result[i,j] = numpy.array_equal(M[i], M[j])
我应该以一个M.shape[0]^2
大的真值表结尾,其中至少对角线为真。
答案 0 :(得分:2)
扩展后的杠杆broadcasting
-
两个Wait()
版本的输入,以便我们可以沿第一个轴相互比较 pairiwise-array-blocks ,同时保持最后两个轴对齐-
ValueTask<T>
我们可以使用最后两个轴作为html2pdf->setTestTdInOnePage(false);
的输入,将其扩展到通用n维数组的情况-
4D
利用result = (M[:,None] == M).all((2,3))
来提高存储效率,从而提高性能-
.all()
大型阵列上的计时-
(M[:,None] == M).all((-2,-1))
原始版本-
views
结论将是-删除循环,但要注意内存使用情况。如果可能的话,找到其他方法来保持向量化和内存高效。