例如,我有一个矩阵:
[ [1 2 3 4 5],
[6 7 8 9 10],
[11 12 13 14 15],
[16 17 18 19 20],
[21 22 23 24 25] ]
我想在某个位置插入[[-1 -1 -1],[0 5 0]],如:
[ [1 2 3 4 5],
[6 7 8 9 10],
[11 -1 -1 -1 15],
[16 0 5 0 20],
[21 22 23 24 25] ]
答案 0 :(得分:2)
使用numpy插入! 这是一个来自scipy的numpy引用的例子:
>>> a = np.array([[1, 1], [2, 2], [3, 3]])
>>> a
array([[1, 1],
[2, 2],
[3, 3]])
>>> np.insert(a, 1, 5)
array([1, 5, 1, 2, 2, 3, 3])
>>> np.insert(a, 1, 5, axis=1)
array([[1, 5, 1],
[2, 5, 2],
[3, 5, 3]]
在此处阅读更多内容:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.insert.html
答案 1 :(得分:0)
此方法取矩阵m,并从行r,列c
开始用数组n替换元素def replace(m, n, r, c):
i = 0
if len(n) + c > len(m[r]):
return
for each in n:
m[r][c] = n[i]
c += 1
i += 1
你必须检查矩阵的索引边界
答案 2 :(得分:0)
根据示例,我会说您正在尝试替换或修改 现有数组的一部分而不是插入一个数组。
您可以使用basic slicing来查看要覆盖的数组部分, 并将该切片的值分配给相同大小的新矩阵 作为切片。 例如:
>>> x=np.matrix([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
>>> x
matrix([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> x[1:3,1:4]=np.matrix([[-1,-2,-3],[-4,-5,-6]])
>>> x
matrix([[ 1, 2, 3, 4],
[ 5, -1, -2, -3],
[ 9, -4, -5, -6],
[13, 14, 15, 16]])
通常,要描述m
行和n
列的子矩阵,其左上角位于原始矩阵的行r
和列c
,
将切片索引为x[r:r+m,c:c+n]
。