按我的理解,numpy里面的dimension定义特指嵌套的层数,而不是按照矩阵中dimension的定义计算,我一开始也非常困惑,看了知乎“张伊”大佬的回答才明白
例:
c=np.array(
[1, 2, 3, 4]
)
print('Dimension:'+str(c.ndim))
PS C:\Users\Yooooooooooooooooomu\Desktop\torment-master> python test02.py
Dimension:1
c=np.array(
[[1, 2, 3, 4]]
)
print('Dimension:'+str(c.ndim))
PS C:\Users\Yooooooooooooooooomu\Desktop\torment-master> python test02.py
Dimension:2
以此类推。
按照我的理解,shape返回的是每一层元素的个数,由外向内。
例:
c=np.array(
[
[
[[1],[1]],
[[1],[1]],
[[1],[1]]
],
[
[[1],[1]],
[[1],[1]],
[[1],[1]]
],
[
[[1],[1]],
[[1],[1]],
[[1],[1]]
],
[
[[1],[1]],
[[1],[1]],
[[1],[1]]
]
]
)
print('shape:'+str(c.shape))
可以看到,这是一个嵌套了四层的ndarray,最外层套了四个第三层的数组,每一个第三层数组又包含三个二层数组,每一个二层数组又包含了两个一层数组,一层数组包含一个元素,则shape返回值为(4,3,2,1)
PS C:\Users\Yooooooooooooooooomu\Desktop\torment-master> python test02.py
shape:(4, 3, 2, 1)
这个问题查了很多文章都没有找到详细的解答,希望这篇文章能帮到更多遇到同样问题的人。
本人是python小白,文章有问题欢迎各位大神指点。
参考:
【1】知乎大神“张伊”的回答 https://www.zhihu.com/question/64894713
【2】官方文档
https://numpy.org/doc/stable/reference/generated/numpy.ndarray.shape.html