[英]IndexError: too many indices. Numpy Array with 1 row and 2 columns
当我试图获得像这样的数组的第一个元素
import numpy
a = numpy.array([1,2])
a[:,0]
我收到这个错误
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-3-ed371621c46c> in <module>()
----> 1 a[:,0]
IndexError: too many indices
我想找到一种方法来执行此操作,同时仍然使用切片,因为完整的代码打开并使用numpy.loadtxt()
读取许多不同的文件,所有文件都有两列,从1到N不等。
你的数组a = numpy.array([1,2])
只有一个维度:它的形状是(2,)
。 但是,切片a[:,0]
指定两个维度的选择。 这会导致NumPy引发错误。
从获得的第一个元素a
,你只需要编写a[0]
一个只有一个层面正在这里做选择)。
看着你的其他问题 ,如果你想确保语法a[:,0]
总是工作,你可以确保a
总是有两个方面。 使用np.loadtxt
加载数组时, np.loadtxt
使用ndmin
参数,例如:
np.loadtxt(F, skiprows=0, ndmin=2)
如上所述,您有一维数组,并且您尝试使用两个维度对其进行切片。
要添加的一件事,我在过去发现它非常有用,就是numpy允许您轻松地将一维数组转换为二维数组(作为行或列):
>>> a = np.array([0,1,2])
>>> a.shape
(3,)
>>> a_row = a[None,:]
>>> a_row.shape
(1,3)
>>> a_col = a[:,None]
>>> a_col.shape
(3,1)
解析许多可能有1-1000行的输入文件时,我也遇到了这个问题。 但是,我正在使用numpy genfromtxt,它不允许你设置'ndmin',所以我想出的解决方案是为1行数组手动设置数组形状等于1:
>>> arr=np.genfromtxt('file',names=['a','b'],dtype='f4,f4')
>>> if (np.size(arr) == 1): arr.shape=1
1行数组现在就像一个可以索引的1-D数组:
>>> for i in range(np.size(arr)): print arr['a'][i]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.