如何将给定行`i`或列`j`与标量相乘?

时间:2012-12-20 19:04:45

标签: python numpy

import numpy as np

M = np.matrix([
        [-1,-2,-3],
        [-4,-5,-6]
    ])

print(M)
  1. 如何将给定行i或列j与标量相乘?
  2. 如何以列表形式访问给定列或行?
  3. 如果给定列表(适当的长度),如何设置给定的列或行?

3 个答案:

答案 0 :(得分:7)

要乘以特定列:

M[:,colnumber] *= scalar

或者一行:

M[rownumber,:] *= scalar

当然,以可迭代方式访问它们是一回事:

col_1 = M[:,1]

虽然,这会为您提供一个新矩阵,而不是list。虽然,老实说,我似乎无法用matrix个对象来计算所有这些操作 - 而这些操作看起来并不像matrix类型。您是否有理由使用matrix代替array个对象?如果您想要矩阵乘法,可以始终使用np.dot(array_mat1, array_mat2)

答案 1 :(得分:6)

您可以使用slicing来完成此操作:

>>> M = np.matrix([
...         [-1,-2,-3],
...         [-4,-5,-6]
...     ])
>>> M[1,:] *= 2          # multiply all elements in second row by 2
>>> M
matrix([[ -1,  -2,  -3],
        [ -8, -10, -12]])
>>> M[:,1] *= 2          # multiply all elements in second column by 2
>>> M
matrix([[ -1,  -4,  -3],
        [ -8, -20, -12]])

将给定的列或行分配给列表:

>>> M[:,1] = [[0], [0]]        # note the nested lists to reassign column
>>> M
matrix([[ -1,   0,  -3],
        [ -8,   0, -12]])
>>> M[1,:] = [2, 2, 2]         # flat list to reassign row
>>> M
matrix([[-1,  0, -3],
        [ 2,  2,  2]])

答案 2 :(得分:0)

使用Python 2.7

1)您可以将行或列乘以某个标量s,如下所示:

M[i, :] *= s
M[:, j] *= s

2)您可以像这样访问行或列:

M[i, :]
M[:, j]

3)您可以将行或列设置为列表l,如下所示:

M[i, :] = l
M[:, j] = l

请注意,在最后一个列表中,您的列表(如果您要设置列)必须是列表中的列表(即外部列表充当行,内部列表充当列)。