单个元素数组中的“索引太多”

时间:2018-02-02 10:51:52

标签: python arrays numpy

我正在编写一个代码,该代码首先读取用户提供的输入目录。该目录有许多元素,从1 o到任何地方。然后代码遍历所有元素以完成它的工作。

假设元素的名称存储在名为“names”的数组中

当目录包含2个或更多元素时,一切都很好。但是当它只包含1个元素时,我会收到以下错误:

len(names) --> len of unsized object
names[0] --> Too many indices for array

阅读目录的代码只是

cat='cat.dat'
names=np.loadtxt(cat,unpack=True,skiprows=0,dtype=("U25"))
len(names)
print(names[0])

cat.dat只是

name1
#name2

有谁知道这样做的正确方法是什么?我现在正在从IDL转换到Python,这似乎是一种非常直接的编写方式。

提前致谢

1 个答案:

答案 0 :(得分:0)

导致错误是因为单个元素作为零维数组加载。您可以通过调用

names转换为1D数组
names = names.ravel()

names = names.reshape(-1)

如果数组已经是1D(目录中有多个元素),则不会更改。 (但是,如果数组有多个维度,它将被展平。)

示例:

x = np.array(5.0)
y = x.ravel()
print(y[0])  # 5
print(x[0])  # -> Error
相关问题