[英]How to subtract the previous rows column from current column and create a new dimension in the array with this value using numpy?
What I want to do is take my current array and subtract the previous rows column value from the current rows column value. 我想做的是获取当前数组,并从当前行列值中减去前几行的值。 I also want to take the result and add it to the array as a new dimension. 我也想获取结果并将其作为新维度添加到数组中。
Example Array: 示例数组:
[[1,2,4,7,9,15], [3, 4,3,5,10,2], [5,6,56,7,20,1]]
Lets say I want to do this with the 4th column so I want the output to be an array that looks like this: 可以说我想在第4列中执行此操作,因此我希望输出是一个看起来像这样的数组:
[[1,2,4,7,9,15,0], [3, 4,3,5,10,2,-2], [5,6,56,7,20,1,2]]
Thanks 谢谢
You can do this using a combination of np.diff
, and concatenate
options, like so: 您可以结合使用np.diff
和concatenate
选项来执行此操作,如下所示:
import numpy as np
myarray = np.array([[1,2,4,7,9,15], [3, 4,3,5,10,2], [5,6,56,7,20,1]])
#your differences appears to be wraparound, so we repeat the last row at the top:
myarray_wrap = np.vstack((myarray[-1],myarray))
#this gets the diffs for all columns:
column_diffs = np.diff(myarray_wrap, axis=0)
#now we add in only the the column_diff that we want, at the end:
print np.hstack((myarray, column_diffs[:,3].reshape(-1,1)))
#Output:
[[ 1 2 4 7 9 15 0]
[ 3 4 3 5 10 2 -2]
[ 5 6 56 7 20 1 2]]
This Python code should solve your problem. 此Python代码应该可以解决您的问题。
previous = None
for row in rows:
current = row[4]
row.append( 0 if previous == None else current - previous )
previous = current
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.