前言
最近项目小伙伴问我一下问题,把我难住了,😀,
详解
我们知道在Python中的数组和张量的shape属性中:
-
shape[0] 表示数组的第一个维度大小,通常是行数
-
shape[1] 表示数组的第二个维度大小,通常是列数
-
shape[-1] 表示数组的最后一个维度大小
举个例子:
python
import numpy as np
# 一个3行2列的数组
arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.shape) # (3, 2)
# shape[0] 是3,表示3行
print(arr.shape[0]) # 3
# shape[1] 是2,表示2列
print(arr.shape[1]) # 2
# shape[-1] 也是2,因为最后一个维度是列数
print(arr.shape[-1]) # 2
所以对一个n维数组而言:
-
shape[0]到shape[n-2]表示数组每个维度的大小
- shape[n-1]和shape[-1]都表示数组最后一个维度的大小在很多情况下,我们会利用shape[0]和shape[1]来获取数组的行列大小,利用shape[-1]来统一获取最后一个维度的大小。所以这三个的主要区别是:
-
shape[0]和shape[1]分别表示数组的行数和列数
-
shape[-1]表示数组的最后一维的大小,可以用于不确定数组维度情况下获取最后一维.
-
我们知道shape函数是Numpy中的函数,用于获取数组的维度信息:
具体来说:
-
.shape 可以获取数组的完整维度信息,以元组的形式返回,比如(2, 3)表示2维数组,有2行3列
-
shape[0]表示数组的第一个维度大小,通常是行数
-
shape[1]表示数组的第二个维度大小,通常是列数
-
shape[2]表示数组的第三个维度大小,依此类推
-
shape[-1]表示数组的最后一个维度大小,对任何维数组都表示最后一维的大小
-
shape[-2], shape[-3]等表示倒数第二,第三个维度的大小
举几个例子:
二维数组:
python
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # (2, 3)
print(arr.shape[0]) # 2 行数
print(arr.shape[1]) # 3 列数
print(arr.shape[-1]) # 3 列数
三维数组:
python
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr.shape) # (2, 2, 3)
print(arr.shape[0]) # 2 第一个维度
print(arr.shape[1]) # 2 第二个维度
print(arr.shape[2]) # 3 第三个维度
图像:
python
img = np.arange(12).reshape(3, 4)
print(img.shape) # (3, 4)
print(img.shape[0]) # 3 高
print(img.shape[1]) # 4 宽
print(img.shape[-1]) # 4 宽
所以综上,.shape 以及 shape[] 的下标访问是获取Numpy数组维度信息的重要方式,可以灵活使用 shape[0], shape[1], shape[-1]等来获取对应维度的大小。
O(∩_∩)O哈哈~,以后我们可要抓紧时间学习,别到时候被学弟给鄙视了,😀工作这么多年,被这个问题给难住了哈哈