用NumPy数组映射一个序列——维度问题?

用NumPy数组映射一个序列——维度问题?,numpy,pandas,Numpy,Pandas,当我使用2d阵列贴图时,一切正常。当我开始使用1d arrray时,会发生此错误索引器错误:不支持的迭代器索引。这就是我所说的错误: 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]

当我使用2d阵列贴图时,一切正常。当我开始使用1d arrray时,会发生此错误<代码>索引器错误:不支持的迭代器索引。这就是我所说的错误:

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
[426]中的
:y=系列([0,1,0,1])
[427]中:arr1=np.数组([10,20])
[428]中:arr2=np.数组([10,20],[30,40])
In[429]:arr2[y,y]
Out[429]:数组([10,40,10,40])
In[430]:arr1[y]
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
---->1 arr1[y]
索引器错误:不支持的迭代器索引
我在NumPy 1.8.1中使用最新的Anaconda发行版。也许这和NumPy bug有关?
有人能告诉我是什么导致了这个错误吗?

您需要将序列转换为数组,或者反之亦然。对于一维对象,索引器必须是一维的

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

谢谢,太好了。看来我需要进一步了解numpy索引。如果需要,您可以使用
arr.ravel()
将二维转换为一维。我也在研究arr2[y,0],但想弄清楚发生了什么,以防我不了解numpy是如何工作的(我不了解!)