Nếu bạn muốn thêm một vector để một ma trận, bạn có thể làm như vậy bằng cách chọn nơi cần đi:
In [155]: ma = np.matrix(
...: [[ 1., 1., 1.],
...: [ 1., 1., 1.],
...: [ 1., 1., 1.]])
In [156]: mb = np.matrix([[1,2,3]])
In [157]: ma[1] += mb # second row
In [158]: ma
Out[158]:
matrix([[ 1., 1., 1.],
[ 2., 3., 4.],
[ 1., 1., 1.]])
In [159]: ma[:,1] += mb.T # second column
In [160]: ma
Out[160]:
matrix([[ 1., 2., 1.],
[ 2., 5., 4.],
[ 1., 4., 1.]])
Nhưng tôi muốn cảnh báo rằng bạn không sử dụng numpy.matrix
như đã nêu. Thực tế, bạn đang sử dụng numpy.ndarray
vì np.ones
trả về số ndarray
và không phải là matrix
.
Các thêm là vẫn như nhau, nhưng tạo ra một số ma trận, và bạn sẽ thấy rằng họ hành xử khác nhau:
In [161]: ma*mb
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
ValueError: matrices are not aligned
In [162]: mb*ma
Out[162]: matrix([[ 6., 6., 6.]])
In [163]: ma*mb.T
Out[163]:
matrix([[ 6.],
[ 6.],
[ 6.]])
In [164]: aa = np.ones((3,3))
In [165]: ab = np.arange(1,4)
In [166]: aa*ab
Out[166]:
array([[ 1., 2., 3.],
[ 1., 2., 3.],
[ 1., 2., 3.]])
In [167]: ab*aa
Out[167]:
array([[ 1., 2., 3.],
[ 1., 2., 3.],
[ 1., 2., 3.]])
Nhờ giải thích nó. Vẫn chưa hiểu khái niệm đó, mặc dù thông báo lỗi đã chỉ tôi đến nó: "ValueError: toán hạng không thể được phát cùng với các hình dạng ..." – andershqst