2014-07-25 3 views
1

2 차원 배열 맵을 사용하면 모든 것이 잘 동작합니다. 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 버그 discussed here과 관련이 있습니까? 아무도이 오류의 원인을 알려 줄 수 있습니까?

답변

2

시리즈를 배열로 변환하거나 배열에서 배열로 변환해야합니다. 인덱서는 1-d 오브젝트에 대해 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()''을 사용하여 2-d를 1-d로 변환 할 수 있습니다. – Jeff

+0

알아두면 좋을 것. 나는 또한 arr2 [y, 0]와 함께 일하고 있었지만 numpy가 어떻게 작동 하는지를 이해하지 못하는 경우에 어떤 일이 일어나고 있는지를 알고 싶었다. (나는 obv가 아니었다!) – JohnE

관련 문제