在numpy中x.shape [0]和x.shape有什么不同?

时间:2017-10-06 17:59:55

标签: python numpy

numpy中x.shape [0]和x.shape有什么不同?我没有[0]的代码然后有一个错误:“TypeError:arange:期望的标量参数而不是元组。”但是当我添加[0]时,我的代码完全运行。

为什么我不能输入x.shape [1]或x.shape [1000]?

期待收到大家的答复,非常感谢!!

1 个答案:

答案 0 :(得分:1)

从错误消息中:

" TypeError:arange:期望的标量参数而不是元组。"

听起来我正在尝试使用现有数组的形状来使用np.arange定义新数组的形状。

你的问题是你不明白x.shape给你的是什么。

例如:

x = np.array([[1,2,3],[4,5,6]])
x.shape

产生(2,3),一个元组。如果我尝试仅使用x.shape在np.arange中定义一个参数,如下所示:

np.arange(x.shape)

我收到以下错误:

" arange:预期的标量参数而不是元组。"

原因是np.arange接受一个标量(它创建一个从0开始的数组,并且增加1到所提供的长度)或3个标量,它们定义了从何处开始和结束数组以及步长。你给它一个元组而不是它不喜欢。

所以当你这样做时:

np.arange(x.shape[0])

你给arange函数提供x.shape提供的元组中的第一个标量,并在我的例子中生成一个像[0,1]这样的数组,因为元组中的第一个索引是2。

如果我选择了

np.arange(x.shape[1])

我会得到一个类似[0,1,2]的数组,因为元组中的第二个索引是3。

如果我做了以下任何一项,

np.arange(x.shape[2])
np.arange(x.shape[1000])
np.arange(x.shape[300])

我会收到一个错误,因为x.shape创建的元组只有两个维度,所以不能将其编入任何超过0或1的索引。

希望有所帮助!