今天遇到了这个问题,感觉跟之前的认识不一样,所以记录一下:
numpy.ndim
查看网上的定义:
感觉Python 中一些概念跟数学不是很一致,这里使用了dimension,后边的解释还出现了rank,在线性代数里,我们理解这个 rank 是秩的意思吧,但是这里显然不是这样的,比如单位矩阵:
data = [[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]
arr1 = array(data)
这时候输出的arr1.ndim是2,后来找资料,可以这么理解:在数学里我们理解二维,三维空间,一个非常直观的就是二维平面中的点可以这样表示 (i, j) , 三维空间中则是 (i, j, k) 这个维就是这样,如果我们可以使用i,j两个坐标表示array中的一个数据,那么它的ndim就是2, i,j,k同理就是3了,测试一下:
from numpy import *
d1 = [[1,2],
[2, 3]]
a1 = array(d1)
d2 = [[[1, 2], [2,3]],
[[2, 3], [3, 4]]] #3维数组
a2 = array(d2)
print(a1.ndim) #2
print("-"*9)
print(a2.ndim) #3
这样就搞清楚这个dimension跟rank是什么意思了。
顺便说一下跟这个总在一块的属性,shape ,跟它的名字一样,就是数组的行、列数:
d2 = [[[1, 2], [2,3]],
[[2, 3], [3, 4]]]
a2 = array(d2)
print(a2.ndim)
print(a2.shape) #(2, 2, 2)