我有以下内容来计算矩阵的差异,即第i个元素 - (i-1)元素。
如何(轻松)水平和垂直计算每个元素的差异?转置?
inputarr = np.arange(12)
inputarr.shape = (3,4)
inputarr+=1
#shift one position
newarr = list()
for x in inputarr:
newarr.append(np.hstack((np.array([0]),x[:-1])))
z = np.array(newarr)
print inputarr
print 'first differences'
print inputarr-z
输出
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
first differences
[[1 1 1 1]
[5 1 1 1]
[9 1 1 1]]
答案 0 :(得分:3)
查看numpy.diff
。
来自文档:
计算给定轴的n阶离散差。
第一顺序差异由
out[n] = a[n+1] - a[n]
给出 在给定的轴上,通过使用diff计算更高阶的差异 递归。
一个例子:
>>> import numpy as np
>>> a = np.arange(12).reshape((3,4))
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.diff(a,axis = 1) # row-wise
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
>>> np.diff(a, axis = 0) # column-wise
array([[4, 4, 4, 4],
[4, 4, 4, 4]])