gpt4 book ai didi

python - NumPy 认为二维数组是一维的

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:08 25 4
gpt4 key购买 nike

我有一个从文本文件构造的 NumPy 数组。我已经这样做了好几个星期了,以前从未遇到过这个问题。

print data
print data[:, 1:]

输出

[['1', '200', '300', '400', '500\n']
['3', '500', '400', '200', '1000\n']
['14', '900', '200', '300', '100\n'] ...,
['999142', '24', '21', '20', '12\n']]
Traceback (most recent call last):
File ...., line ..., in ....
print data[:, 1:]
IndexError: too many indices

为什么会发生这种情况以及如何解决它?

编辑:大线索。 data.shape(3313869,),没有第二个值。

data.ndim1

然而,

len(data[1]) 是 5。

编辑,我正在构建它

data = [re.split(' ', line) for line in f]
f.close()
data = np.array(data)

当我插嘴时

f.close()
print data[0:10]

它给出了即

[['1', '200', '300', '400', '500\n'], ['3', .... ]]

最佳答案

发生问题是因为您的代码以某种方式创建了对象的 numpy.array 。请参阅this question有类似的问题。当它发生时,你会得到类似的信息:

a = numpyp.array([list1, list2, list3, ... , listn], dtype=object)

它是一个一维数组,但是当您要求打印时,它将调用内部每个列表的 __str__ ,给出:

[[ 1, 2, 3, 4],
[ 5, 6, 7, 8]]

这看起来像一个二维数组。

你可以模拟它:

a = ['aaa' for i in range(10)]
b = numpy.empty((5),dtype=object)
b.fill(a)

让我们检查一下b:

b.shape # (5,)
b.ndim # 1

但是 print b 给出:

[['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa']
['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa']
['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa']
['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa']
['aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa']]

相当棘手...

关于python - NumPy 认为二维数组是一维的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17031918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com