Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 累积矩阵_Python_Matrix_Cumsum - Fatal编程技术网

Python 累积矩阵

Python 累积矩阵,python,matrix,cumsum,Python,Matrix,Cumsum,我有一个这样的矩阵 [[1,2,4,6], [4,7,9,9], [1,9,10,20]] 在python中如何通过列获得部分和 [[1,2,4,6], [(4-1),(7-2),(9-4),(9-6)], [(1-4),(9-7),(10-9),(20-9)]] 从第二行开始,您需要的只是行i和行i-1的差异,第一行就是原始数组的第一行。最简单的方法是使用。所以这是可行的: In [1]: import numpy as np In [2]: a = np.array( [[1,2,4,

我有一个这样的矩阵

[[1,2,4,6],
[4,7,9,9],
[1,9,10,20]]
在python中如何通过列获得部分和

[[1,2,4,6],
[(4-1),(7-2),(9-4),(9-6)],
[(1-4),(9-7),(10-9),(20-9)]]

从第二行开始,您需要的只是行
i
和行
i-1
的差异,第一行就是原始数组的第一行。最简单的方法是使用。所以这是可行的:

In [1]: import numpy as np

In [2]: a = np.array( [[1,2,4,6],
   ...: [4,7,9,9],
   ...: [1,9,10,20]]
   ...: )

In [3]: np.vstack( (a[0], a[1:]-a[:-1]) )
Out[3]: 
array([[ 1,  2,  4,  6],
       [ 3,  5,  5,  3],
       [-3,  2,  1, 11]])

正如亨利·沃顿勋爵(!)所指出的那样,
a[1:]-a[:-1]
np.diff(a,axis=0)
从第二行开始,您需要的只是行
i
与行
i-1
之间的差异,而第一行就是原始数组的第一行。最简单的方法是使用。所以这是可行的:

In [1]: import numpy as np

In [2]: a = np.array( [[1,2,4,6],
   ...: [4,7,9,9],
   ...: [1,9,10,20]]
   ...: )

In [3]: np.vstack( (a[0], a[1:]-a[:-1]) )
Out[3]: 
array([[ 1,  2,  4,  6],
       [ 3,  5,  5,  3],
       [-3,  2,  1, 11]])

正如亨利·沃顿勋爵(!)所指出的那样,
a[1:]-a[:-1]
np.diff(a,axis=0)
从第二行开始,您需要的只是行
i
与行
i-1
之间的差异,而第一行就是原始数组的第一行。最简单的方法是使用。所以这是可行的:

In [1]: import numpy as np

In [2]: a = np.array( [[1,2,4,6],
   ...: [4,7,9,9],
   ...: [1,9,10,20]]
   ...: )

In [3]: np.vstack( (a[0], a[1:]-a[:-1]) )
Out[3]: 
array([[ 1,  2,  4,  6],
       [ 3,  5,  5,  3],
       [-3,  2,  1, 11]])

正如亨利·沃顿勋爵(!)所指出的那样,
a[1:]-a[:-1]
np.diff(a,axis=0)
从第二行开始,您需要的只是行
i
与行
i-1
之间的差异,而第一行就是原始数组的第一行。最简单的方法是使用。所以这是可行的:

In [1]: import numpy as np

In [2]: a = np.array( [[1,2,4,6],
   ...: [4,7,9,9],
   ...: [1,9,10,20]]
   ...: )

In [3]: np.vstack( (a[0], a[1:]-a[:-1]) )
Out[3]: 
array([[ 1,  2,  4,  6],
       [ 3,  5,  5,  3],
       [-3,  2,  1, 11]])

正如亨利·沃顿勋爵(!)所指出的那样,
a[1:]-a[:-1]
np.diff(a,axis=0)
如果您想要一个不涉及numpy的解决方案,并且只使用列表和(内置的)列表,那么下面的解决方案应该是可行的

from itertools import tee

a = [[1,2,4,6],
     [4,7,9,9],
     [1,9,10,20]]

b = []
b.append(a[0])

# Create two iterators and advance one once.
x, y = tee(a)
next(y)

# Iterate over your two iterators and construct a list t which is their difference
# then append this list to b
for i, j in zip(x, y):
  t = [h-g for g, h in zip(i,j)]
  b.append(t)

print(b)
# [[1, 2, 4, 6], 
#  [3, 5, 5, 3], 
#  [-3, 2, 1, 11]]

如果您想要一个不涉及numpy的解决方案,并且只使用列表列表和(这是内置的),那么下面的解决方案应该可以使用

from itertools import tee

a = [[1,2,4,6],
     [4,7,9,9],
     [1,9,10,20]]

b = []
b.append(a[0])

# Create two iterators and advance one once.
x, y = tee(a)
next(y)

# Iterate over your two iterators and construct a list t which is their difference
# then append this list to b
for i, j in zip(x, y):
  t = [h-g for g, h in zip(i,j)]
  b.append(t)

print(b)
# [[1, 2, 4, 6], 
#  [3, 5, 5, 3], 
#  [-3, 2, 1, 11]]

如果您想要一个不涉及numpy的解决方案,并且只使用列表列表和(这是内置的),那么下面的解决方案应该可以使用

from itertools import tee

a = [[1,2,4,6],
     [4,7,9,9],
     [1,9,10,20]]

b = []
b.append(a[0])

# Create two iterators and advance one once.
x, y = tee(a)
next(y)

# Iterate over your two iterators and construct a list t which is their difference
# then append this list to b
for i, j in zip(x, y):
  t = [h-g for g, h in zip(i,j)]
  b.append(t)

print(b)
# [[1, 2, 4, 6], 
#  [3, 5, 5, 3], 
#  [-3, 2, 1, 11]]

如果您想要一个不涉及numpy的解决方案,并且只使用列表列表和(这是内置的),那么下面的解决方案应该可以使用

from itertools import tee

a = [[1,2,4,6],
     [4,7,9,9],
     [1,9,10,20]]

b = []
b.append(a[0])

# Create two iterators and advance one once.
x, y = tee(a)
next(y)

# Iterate over your two iterators and construct a list t which is their difference
# then append this list to b
for i, j in zip(x, y):
  t = [h-g for g, h in zip(i,j)]
  b.append(t)

print(b)
# [[1, 2, 4, 6], 
#  [3, 5, 5, 3], 
#  [-3, 2, 1, 11]]
试一试

np.vstack((Z[0],np.diff(Z,轴=0)))

其中
Z
是您要区分的矩阵。

试试看

np.vstack((Z[0],np.diff(Z,轴=0)))

其中
Z
是您要区分的矩阵。

试试看

np.vstack((Z[0],np.diff(Z,轴=0)))

其中
Z
是您要区分的矩阵。

试试看

np.vstack((Z[0],np.diff(Z,轴=0)))


其中
Z
是您要区分的矩阵。

如果您不想使用numpyitertools,以下是代码

>>> a=[[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> a_r = a[::-1]  # reverse original list
>>> for i in range(len(a_r)-1):
...    for j in range(len(a_r[0])):
...       a_r[i][j] = a_r[i][j] - a_r[i+1][j]
... 
>>> a=a_r[::-1]  # reverse result 
>>> for i in a: print i
[1, 2, 4, 6]
[3, 5, 5, 3]
[-3, 2, 1, 11]

如果您不想使用numpyitertools,下面是代码

>>> a=[[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> a_r = a[::-1]  # reverse original list
>>> for i in range(len(a_r)-1):
...    for j in range(len(a_r[0])):
...       a_r[i][j] = a_r[i][j] - a_r[i+1][j]
... 
>>> a=a_r[::-1]  # reverse result 
>>> for i in a: print i
[1, 2, 4, 6]
[3, 5, 5, 3]
[-3, 2, 1, 11]

如果您不想使用numpyitertools,下面是代码

>>> a=[[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> a_r = a[::-1]  # reverse original list
>>> for i in range(len(a_r)-1):
...    for j in range(len(a_r[0])):
...       a_r[i][j] = a_r[i][j] - a_r[i+1][j]
... 
>>> a=a_r[::-1]  # reverse result 
>>> for i in a: print i
[1, 2, 4, 6]
[3, 5, 5, 3]
[-3, 2, 1, 11]

如果您不想使用numpyitertools,下面是代码

>>> a=[[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> a_r = a[::-1]  # reverse original list
>>> for i in range(len(a_r)-1):
...    for j in range(len(a_r[0])):
...       a_r[i][j] = a_r[i][j] - a_r[i+1][j]
... 
>>> a=a_r[::-1]  # reverse result 
>>> for i in a: print i
[1, 2, 4, 6]
[3, 5, 5, 3]
[-3, 2, 1, 11]

我觉得这个不错

>>> a = [[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> c = [[0]*5] ; c.extend(a)
>>> print [[ s-r for r, s in zip(*t)] for t in zip(c[:-1],c[1:])]
[[1, 2, 4, 6], [3, 5, 5, 3], [-3, 2, 1, 11]]
>>> 

在这里,我为列表列表预先准备了一个零列表(获取
c
),通过使用
zip
打包和解包,我得到了一个具有预期结果的列表。

我认为这个列表很好

>>> a = [[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> c = [[0]*5] ; c.extend(a)
>>> print [[ s-r for r, s in zip(*t)] for t in zip(c[:-1],c[1:])]
[[1, 2, 4, 6], [3, 5, 5, 3], [-3, 2, 1, 11]]
>>> 

在这里,我为列表列表预先准备了一个零列表(获取
c
),通过使用
zip
打包和解包,我得到了一个具有预期结果的列表。

我认为这个列表很好

>>> a = [[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> c = [[0]*5] ; c.extend(a)
>>> print [[ s-r for r, s in zip(*t)] for t in zip(c[:-1],c[1:])]
[[1, 2, 4, 6], [3, 5, 5, 3], [-3, 2, 1, 11]]
>>> 

在这里,我为列表列表预先准备了一个零列表(获取
c
),通过使用
zip
打包和解包,我得到了一个具有预期结果的列表。

我认为这个列表很好

>>> a = [[1,2,4,6],
... [4,7,9,9],
... [1,9,10,20]]
>>> c = [[0]*5] ; c.extend(a)
>>> print [[ s-r for r, s in zip(*t)] for t in zip(c[:-1],c[1:])]
[[1, 2, 4, 6], [3, 5, 5, 3], [-3, 2, 1, 11]]
>>> 
在这里,我将一个零列表预先添加到列表列表中(获取
c
),通过使用
zip
打包和解包,我得到了一个具有预期结果的列表