np.ndarray != Matrix, 使用np.ndarray时的注意事项

索引多维数组的某一列时返回的是一个行向量

>>> X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
>>> X[:, 1]
array([2, 6, 10])       % 这里是一个行
>>> X[:, 1].shape       % X[:, 1] 的用法完全等同于一个行,而不是一个列,
(3, )

所以,一种正确的索引方式是:

>>>X[:, 1][:, np.newaxis]
array([[2],
 [6],
 [10]])

如果想实现第二列和第四列的拼接(层叠):

>>>X_sub = np.hstack([X[:, 1][:, np.newaxis], X[:, 3][:, np.newaxis]])           
 % hstack:horizontal stack,水平方向上的层叠
>>>X_sub
array([[2, 4]
 [6, 8]
 [10, 12]])

A.dot(B) 与 A*B

operator matlab python
矩阵乘法
A的列等于B的行
*
A*B
A.dot(B)
np.dot(A, B)
按位相乘
element-wise
A.*B A*B

矩阵运算从matlab迁移到python(numpy)更详尽的内容请参见<Python 机器学习——线性代数和矩阵运算:从matlab迁移到python>

你可能感兴趣的:(Matrix,np-ndarray,np-newaxis)