2014-07-25 25 views
1

當我使用2d數組映射時,一切正常。當我開始使用1d arrray的時候會發生這個錯誤; IndexError: unsupported iterator index。這是我所說的錯誤:使用NumPy數組映射系列 - 維度問題?

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 

我在使用NumPy 1.8.1使用最新的Anaconda發行版。也許這與NumPy錯誤?有關? 有人能告訴我是什麼原因導致了這個錯誤?

回答

2

您需要將Series轉換爲數組,反之亦然。索引器對於一維對象必須是1-d。

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 
+0

謝謝,這很完美。看起來我需要努力理解numpy索引。 – JohnE

+0

如果需要,你可以用''arr.ravel()'' – Jeff

+0

轉換一個2-d到1-d。很高興知道。我也在用arr2 [y,0]解決問題,但是想知道發生了什麼,以防我不明白numpy是如何工作的(我不知道它是如何運作的)。 – JohnE