gpt4 book ai didi

python - 根据逻辑条件更改一些numpy数组列

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:13 24 4
gpt4 key购买 nike

我有一个2D NumPy 数组,我想执行以下操作:

对于数组中的每一列,即一系列非递减值,将此列替换为差异列(即,每个条目都是前两个条目之间的差异)。

其他每一列都保持不变(除了第一行被删除以适应差异列维度)。

例如矩阵中:

[ [1,1,1,2,3,4]
[1,3,4,3,4,5]
[1,7,3,4,2,7] ]

差异矩阵是:

[ [0,2,3,1,1,1]
[0,4,-1,1,-1,2] ]

因此,具有递减值的第三列和第五列将保持不变,而其他列将替换为差异列,结果为:

[ [0,2,4,1,4,1]
[0,4,3,1,2,2] ]

我试过这样的:

tempX = np.diff(X, axis = 0).transpose()
return np.where(tempX >= 0, tempX, X[1:].transpose())

但是 np.where 中的条件是按元素执行的,而不是针对每一列(或行)执行的。

我怎样才能改变条件让它起作用?有没有更有效的方法来实现这一点?

最佳答案

你可以这样试试:

b = a[1:] - a[:-1]
decrease = numpy.where(numpy.min(b, axis=0)<0)
b[:,decrease] = a[1:, decrease]

你也可以在一个表达式中做到这一点:

numpy.where(numpy.min(a[1:]-a[:-1],axis=0)>=0, a[1:]-a[:-1], a[1:])

关于python - 根据逻辑条件更改一些numpy数组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40607411/

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