【问题标题】:slicing error in numpy arraynumpy数组中的切片错误
【发布时间】:2017-12-06 08:44:54
【问题描述】:

我正在尝试运行以下代码

fs = 1000
data = np.loadtxt("trainingdataset.txt", delimiter=",")
data1 = data[:,2]
data2 = data1.astype(int)
X,Y = data2['521']

但它让我出现以下错误

Traceback (most recent call last):
  File "C:\Users\hadeer.elziaat\Desktop\testspec.py", line 58, in <module>
    X,Y = data2['521']
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

我的数据集

1,4,6,10
2,100,125,10
3,100,7216,254
4,100,527,263
5,100,954,13
6,100,954,23

【问题讨论】:

  • 您的代码有更多错误,而不仅仅是字符串类型的索引。 data[:, 2] 会给你第三栏。您无法使用 X,Y = data2[521] 将其解压缩为两个变量。
  • 你到底想做什么?检索数据文件的第 522 行?以及哪些列?
  • 我想要第三列的所有数据
  • 请问,string 521 在你的上下文中是什么意思?
  • 我写的没有引号

标签: python-3.x numpy matplotlib signal-processing


【解决方案1】:

您正在使用字符串 '521' 而不是数字 521 进行索引。请改用X,Y = data2[521]

如果您只得到字符串,您可以先将其转换为 int:X,Y = data2[int('521')],但这可能会导致一些错误和/或意外行为。

下一个问题,您需要两个变量,一个用于X,一个用于Y,但data2[521] 选择只为您提供了一个变量(第3 列第522 行中的数字)。

【讨论】:

  • 我在没有引用的情况下尝试了它,但它给了我以下错误 Traceback(最近一次调用最后):文件“C:\Users\hadeer.elziaat\Desktop\testspec.py”,第 57 行,在 X,Y = data1[521] TypeError: 'numpy.int32' object is not iterable
【解决方案2】:

你说你想要第三列中的所有数据。

我假设您还想要某种 x 轴,因为您正在尝试做X, Y = ...。使用第一列怎么样?那么您的代码将是:

import numpy as np

data = np.loadtxt("trainingdataset.txt", delimiter=',', dtype='int')
x = data[:, 0]
y = data[:, 2]

您的问题尚不清楚的是为什么您尝试使用 521 索引您的 data - 失败是因为您不能将字符串用作普通数组的索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多