gpt4 book ai didi

python - Numpy - 计算数组中固定距离的所有可能差异

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:47 25 4
gpt4 key购买 nike

假设我有一个数组,我想计算距离 Delta 处的元素之间的差异。我可以使用 numpy.diff(Array[::Delta-1]),但这不会给出所有可能的差异(从每个可能的起点)。要得到它们,我可以想到这样的事情:

for j in xrange(Delta-1):
NewDiff = numpy.diff(Array[j::Delta-1])
if j==0:
Diff = NewDiff
else:
Diff = numpy.hstack((Diff,NewDiff))

但如果这是最有效的方法,我会感到惊讶。熟悉 numpy 最通俗易懂的功能的人有什么想法吗?

最佳答案

以下函数返回一个二维 numpy 数组 diff,其中包含列表或 numpy 数组 a 的所有可能组合之间的差异。例如,diff[3,2] 将包含 a[3] - a[2] 等的结果。

def difference_matrix(a):
x = np.reshape(a, (len(a), 1))
return x - x.transpose()

更新

看来我误解了这个问题,你只是在问数组元素的差异,这些元素相距一定距离 d1)

这可以通过以下方式完成:

>>> a = np.array([1,3,7,11,13,17,19])
>>> d = 2
>>> a[d:] - a[:-d]
array([6, 8, 6, 6, 6])

看看at the documentation了解有关此表示法的更多信息。

但是,我在上面发布的差异矩阵函数不会白费。事实上,您要查找的数组是 difference_matrix 返回的矩阵的对角线。

>>> a = [1,3,7,11,13,17,19]
>>> d = 2
>>> m = difference_matrix(a)
>>> np.diag(m, -d)
array([6, 8, 6, 6, 6])

1) 从您的评论来看,这个距离 d 与您似乎使用的 Delta 不同,d = Delta - 1 ,使得一个元素与自身的距离为0,与相邻元素的距离为1。

关于python - Numpy - 计算数组中固定距离的所有可能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com