numpy中x.shape [0]和x.shape有什么不同?我没有[0]的代码然后有一个错误:“TypeError:arange:期望的标量参数而不是元组。”但是当我添加[0]时,我的代码完全运行。
为什么我不能输入x.shape [1]或x.shape [1000]?
期待收到大家的答复,非常感谢!!
答案 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的索引。
希望有所帮助!