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?为了改进问题,您可以包括您期望的输出,以便帮助您更好地了解您认为混淆的内容。