numpy:尺寸与形状

时间:2020-04-02 09:50:51

标签: numpy shapes dimension

关于属性shape和ndim,我只是一个简短的问题。数组如何具有比二维更多的维数,但是矩阵限于n x m形状?对于三维阵列,是否不必具有形状为m x n x o的形状?

最诚挚的问候

1 个答案:

答案 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,因为它只会增加开发人员的思维能力,不会增加任何真正有用的东西。