4
import numpy as np

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

print(M)
  1. 如何将给定的行i或列j与标量相乘?
  2. 如何将给定的列或行作为列表访问?
  3. 如何设置给定的列或行,给定一个列表(适当的长度)?
4

3 回答 3

7

要乘以特定列:

M[:,colnumber] *= scalar

或一行:

M[rownumber,:] *= scalar

当然,将它们作为可迭代访问是一回事:

col_1 = M[:,1]

虽然,这给了你一个新的矩阵,而不是一个list. 虽然,老实说,我似乎无法弄清楚所有这些与matrix对象的操作——而且这些看起来并不像matrix类型操作。您是否有理由使用matrix而不是array对象?如果你想要矩阵乘法,你总是可以使用np.dot(array_mat1, array_mat2)

于 2012-12-20T19:08:11.017 回答
6

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

>>> 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]])
于 2012-12-20T19:08:24.043 回答
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

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

于 2012-12-20T19:11:29.817 回答