Python 索引超出范围--numpy数组
这个代码有什么问题?我不能简单地将Python 索引超出范围--numpy数组,python,numpy,Python,Numpy,这个代码有什么问题?我不能简单地将数据的第一列切片并将其分配给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 (
数据的第一列切片并将其分配给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
X(3,)的形状
X.shape[0]3
回溯(最近一次呼叫最后一次):
文件“shape.py”,第7行,在
打印('X.shape[1]”,X.shape[1])
索引器错误:元组索引超出范围
当您将X
定义为数据[:,0]
时,您正在创建一个一维数组。由于初始数组,data
是二维的,因此可以将其视为仅从所有行中选择列索引-0-值。这意味着X
的形状中只有一个元素
因此X.shape[0]
存在(它是3
),但X.shape[1]
不存在,导致索引器。注意X包含数组([5.2,-4.1,-12.3])
,因此它是1-D
数组
从形状上也可以看出:
shape of X (3,)
i、 e:
- 第一个维度也是唯一的维度是3
- 没有其他维度
X.shape[1]
(一个不存在的维度),您将得到
索引器错误:元组索引超出范围
别无选择
另一种选择:如果您想要拥有2-D阵列,可以运行:
X2 = data[:, [0]]
然后:
是X2.形状
(3,1)
是X2.形状[0]
3
是X2.形状[1]
1
len(X.shape)
应该给你1
,你不能做X.shape[1]
/如印刷品中所述:X(3,)
的形状,因此它是完全预期的行为。X=data[:,0]
导致X
的一维小于数据。因此,data
是二维的,X
是一维的,它的形状
元组将只包含一个元素。是的,X=data[:,0]
确实会产生1D,但为什么呢?我理解语法的意思是所有行(:)和列0?为了改进问题,您可以包括您期望的输出,以便帮助您更好地了解您认为混淆的内容。