更改一些numpy的阵列列的我有一个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中的条件是按元素进行的,而不是针对每列(或行)进行的。我怎样才能改变这种状况?
有没有更有效的方法来实现这个?
你可以使用一个更大的数组作为样本和更多的数字? – Divakar
您的示例中存在拼写错误很难理解。 ;)我想,它应该是“将被改为'[[0,2,1] [0,4,3]]”,对吗? – nostradamus
我改变了这个例子,我希望现在更清楚吗? – keren42