所以我有一个4乘4的矩阵。 [[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]
我需要用[1,2,3,4]
减去第二行 如果可能的话,没有numpy。我是初学者,不知道如何使用日Thnx
答案 0 :(得分:0)
使用常规Python循环:
a = [[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]
b = [1,2,3,4]
for i in range(4):
a[1][i] -= b[i]
只需循环遍历b
列表中的条目,然后从a[1]
中的相应条目中减去a
矩阵的第二个列表(即行)。
但是,NumPy可以更快,更轻松地为您完成此操作,并且不难学习:
In [47]: import numpy as np
In [48]: a = np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]])
In [49]: a
Out[49]:
array([[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6],
[4, 5, 6, 7]])
In [50]: a[1] -= [1,2,3,4]
In [51]: a
Out[51]:
array([[1, 2, 3, 4],
[1, 1, 1, 1],
[3, 4, 5, 6],
[4, 5, 6, 7]])
请注意NumPy 矢量化它的许多操作(例如减法),因此所涉及的循环都是为你处理的(在快速的,预编译的C代码中)。