我有一个大的纽比阵列。有没有一种方法可以在不使用循环的情况下,减去每个元素及其下面的元素,并将结果存储到一个新的列表/数组中。
一个简单的例子说明我的意思:
a = numpy.array([4,3,2,1])
result = [4-3, 4-2, 4-1, 3-2, 3-1, 2-1] = [1, 2, 3, 1, 2 ,1]
请注意,我使用的“real”数组不包含序列中的数字。这只是为了简化示例。
我知道结果应该是(n-1)!元素,其中n是数组的大小。
有没有一种方法可以不使用循环,而是以“智能”的方式重复数组?
谢谢!
Tags:
执行所有成对减法以生成} adds an extra length-1 axis to ^{} 。)
temp
,包括从元素本身减去元素,从后面的元素中减去较早的元素,然后使用triu_indices
来选择我们想要的结果。(^{请注意,几乎所有的运行时都花在从
^{pr2}$temp
构造result
(因为triu_indices
很慢,并且使用索引来选择数组的上三角也很慢)。如果可以直接使用temp
,则可以节省大量时间:这里有一个基于^{} 的方法,用于广播减法后的提取和掩码的创建,我们再次使用
broadcasting
(可以这样说,双broadcasting
提供了动力)-运行时测试
矢量化方法-
^{pr2}$时间安排-
进一步了解相关性能参数
让我们深入研究一下这个设置的时间安排,来研究基于掩码的方法有多大帮助。现在,比较有两个部分-掩码创建与索引创建和基于掩码的布尔索引与基于整数的索引。在
创建遮罩有多大帮助?
关于
5x
相对于索引设置的掩码创建的改进。在布尔索引对基于整数的索引有多大帮助?
关于
2.5x
的改进。在相关问题 更多 >
编程相关推荐