当我使用二维数组地图时,一切正常。当我开始使用1d arrray时,会发生此错误; IndexError: unsupported iterator index
。这是我正在谈论的错误:
In [426]: y = Series( [0,1,0,1] )
In [427]: arr1 = np.array( [10,20] )
In [428]: arr2 = np.array( [[10,20],[30,40]] )
In [429]: arr2[ y, y ]
Out[429]: array([10, 40, 10, 40])
In [430]: arr1[ y ]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-430-25b98edce1f3> in <module>()
----> 1 arr1[ y ]
IndexError: unsupported iterator index
我正在使用最新的Anaconda发行版和NumPy 1.8.1。也许这与NumPy bug discussed here有关? 有人能告诉我导致这个错误的原因是什么吗?
答案 0 :(得分:2)
您需要将Series转换为数组,反之亦然。对于1维对象,索引器必须为1维。
In [11]: arr1[y.values]
Out[11]: array([10, 20, 10, 20])
In [12]: Series(arr1)[y]
Out[12]:
0 10
1 20
0 10
1 20
dtype: int64