我想知道x.shape [0]是数组的行还是列。
我已编码...
x=np.array([1,2,3,4])
y=np.array([[1,2,3],[4,5,6]])
print(x.shape)
print(y.shape)
(4,) (2,3)
在x.shape中,索引0处的元素是数组x的列。在y.shape中,索引为0的元素是数组y的行。
我不知道形状函数如何返回其输出。请帮助:)
ps.s。我也不明白为什么x.shape返回(4,)。为什么不(4)?
考虑以行和列的形式出现的NumPy数组的形状会很快使您失望,如果您开始处理更复杂的数据。
NumPy数组实际上是多维tensors。张量可以具有任意数量的尺寸。实际上,向量和矩阵分别只是一维和二维张量。
数组的形状返回张量每个维度的大小。让我们从一个简单的向量开始:
x = np.array([1, 2, 3])
在此变量上调用.shape
将返回(3,)
,因为该数组是一维张量,其第一维包含3个元素。逗号只是Python约定,用于指示括号表示Python Tuple。
现在让我们尝试一个矩阵:
m = np.array([
[1, 2, 3],
[4, 5, 6]
])
运行m.shape
现在得到(2, 3)
,因为张量的第一维包含2个向量,而第二维(向量本身)每个都包含3个元素。
最后,让我们尝试一个3-D张量:
t = np.array([
[
[1, 2, 3],
[4, 5, 6]
],
[
[7, 8, 9],
[0, 1, 2]
]
])
t.shape
将返回(2, 2, 3)
,这意味着数组的第一个维度包含两个元素(在这种情况下为两个矩阵),第二个维度(这些矩阵由两个维组成)分别包含两个向量,第三个维度(向量)每个都包含三个元素。
我不明白为什么x.shape返回(4,)。为什么不(4)?
shape是数组维数的元组] >>,对于一维数组,它是具有单个元素的tuple
。由于它始终是元组,因此您可以通过执行以下操作轻松找到具有数组x
的维数:
len(x.shape)
请注意,如果x.shape
为(4)
,因为len((4))
会导致错误,而len((4,))
为1
,则这将是不可能的。关于二维数组,例如:
y=np.array([[1,2,3],[4,5,6]])
形状是(number_of_rows,number_of_columns),知道
y.shape
为(2, 3)
时,您可以推断出以下代码将起作用:
y[0][0] # 0 < 2 and 0 < 3 y[0][1] # 0 < 2 and 1 < 3 y[0][2] # 0 < 2 and 2 < 3 y[1][0] # 1 < 2 and 0 < 3 y[1][1] # 1 < 2 and 1 < 3 y[1][2] # 1 < 2 and 2 < 3
[下面(仅举几个例子),将产生
IndexError
:
y[2][0] # as 2 < 2 and 0 < 3 is False
y[0][3] # as 0 < 2 and 3 < 3 is False
y[2][3] # as 2 < 2 and 3 < 3 is False