如何在矩阵中插入(更改值)矩阵? Python(numpy)

时间:2017-12-10 13:32:42

标签: python numpy matrix

例如,我有一个矩阵:

[ [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] ]

3 个答案:

答案 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]