索引超出范围——numpy 数组

这段代码有什么问题?我不能简单地将 的第一列切片data并将其分配给 X 吗?


import numpy as np

data =np.array([[5.2, -1.5], [-4.1, 3], [-12.3, 55]])

print(data)

X = data[:,0]

print('shape of X ', X.shape)

print('X.shape[0] ',X.shape[0])

print('X.shape[1] ',X.shape[1])

它抛出以下消息:


shape of X  (3,)

X.shape[0]  3

Traceback (most recent call last):

  File "shape.py", line 7, in <module>

    print('X.shape[1] ',X.shape[1])

IndexError: tuple index out of range


四季花海
浏览 141回答 2
2回答

烙印99

当您定义X为data[:,0]时,您正在创建一个一维数组。由于您的初始数组data是二维的,因此您可以将其视为仅从所有行中选择 column-index-0-values。这意味着形状中X只有 1 个元素。所以X.shape[0]存在(它是3),但X.shape[1]不存在,导致 IndexError。

慕妹3146593

请注意,X包含array([ &nbsp;5.2, &nbsp;-4.1, -12.3]),因此它是一维&nbsp;数组。从形状上也可以看出:shape&nbsp;of&nbsp;X&nbsp;&nbsp;(3,)那是:第一个也是唯一的维度是3,没有其他维度。因此,如果您引用X.shape[1](一个不存在的维度),您会得到&nbsp;IndexError: tuple index out of range.没有其他办法了。另一种方法:如果你想要一个二维数组,你可以运行:X2&nbsp;=&nbsp;data[:,&nbsp;[0]]然后:X2.shape是(3, 1),X2.shape[0]是3,X2.shape[1]是1。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python