关于属性shape和ndim,我只是一个简短的问题。数组如何具有比二维更多的维数,但是矩阵限于n x m形状?对于三维阵列,是否不必具有形状为m x n x o的形状?
最诚挚的问候
答案 0 :(得分:0)
我认为您在这里感到困惑,np.array可以具有任意数量的维数,np.matrix只能具有两个维数,np.matrix是ndim = 2并具有特殊矩阵运算符的特定情况。来自np.matrix的NumPy文档:
Note:
It is no longer recommended to use this class, even for linear algebra.
Instead, use regular arrays. The class may be removed in the future.
Returns a matrix from an array-like object, or from a string of data.
A matrix is a specialized 2-D array that retains its 2-D nature through operations.
It has certain special operators, such as * (matrix multiplication) and ** (matrix power).
此外,请注意此示例,以便您可以看到不同之处:
a = np.matrix([[2,2],[2,2]])
print(a**2)
这将返回:
matrix([[8, 8],
[8, 8]])
因为矩阵是“ a”的平方,但是如果对数组做同样的事情:
a = np.array([[2,2],[2,2]])
print(a**2)
它将返回:
array([[4, 4],
[4, 4]])
因为如果您想要np.matrix的行为,则它将正方形应用于所有元素,因此您必须使用np.dot
我认为他们可能会在将来的版本中删除np.matrix,因为它只会增加开发人员的思维能力,不会增加任何真正有用的东西。