Python x.shape[0]与numpy中的x.shape有什么不同?

Python x.shape[0]与numpy中的x.shape有什么不同?,python,numpy,Python,Numpy,x.shape[0]与numpy中的x.shape有什么不同?如果我在没有[0]的情况下编写代码,那么会出现一个bug:TypeError:arange:scalar参数,而不是元组。但是当我在中添加[0]时,我的代码会完全运行 为什么我不能输入x.shape[1]或x.shape[1000] 期待收到大家的答复,非常感谢 从错误消息中: TypeError:arange:应为标量参数,而不是元组 在我看来,您似乎正在尝试使用现有数组的形状来使用np.arange定义新数组的形状 你的问题是你不

x.shape[0]与numpy中的x.shape有什么不同?如果我在没有[0]的情况下编写代码,那么会出现一个bug:TypeError:arange:scalar参数,而不是元组。但是当我在中添加[0]时,我的代码会完全运行

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


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

从错误消息中:

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


希望有帮助

这个问题没有意义,你只是在做索引。为什么你认为x.shape[1000]会给出一个有意义的结果?你希望它给出什么结果/信息?@Divakar:我不明白这个问题与切片符号有什么关系。这个问题很可能是重复的,但这看起来不是一个好的重复目标。@MarkDickinson是的,这里缺少上下文,但如果你问什么是形状元组,那么它都是关于切片的,如果我读标题的话,它是关于切片的。重新开放。由于不清楚,我很想投票关闭它。我对x.shape[1000]感到抱歉。我没有仔细阅读关于形状的定义。我已经阅读并理解了这个问题,但是我的代码仍然有问题,你能帮我检查一下吗?@Divakar:谢谢。在我看来,这至少是离题了,因为它不包含生成异常所需的上下文和代码。。。