我想执行类似的索引操作
ix = [(1,2),(3,4),(5,6)]
ar[ix] # this is invalid real life
这将给我一维数组
array([ar[1,2], ar[3,4], ar[5,6]])
换句话说,我想指定一组坐标并在这些坐标处获取值的向量。这是行不通的,我对索引的精确度并不挑剔ix
,对列表,对列表,二维数组,pandas.DataFrame都可以。我对numpy数组和Pandas DataFrames都感兴趣。
对于numpy,这可以通过非常相似的方式来完成:
>>> a = np.arange(5*5).reshape(5,5)
>>> ix = [(1,2),(3,4),(2,4)]
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> a[zip(*ix)]
array([ 7, 19, 14])
对于大熊猫,您可以通过访问基础的numpy数组以类似的方式获取值:
>>> import pandas as pd
>>> df = pd.DataFrame(a)
>>> df.values[zip(*ix)]
array([ 7, 19, 14])
对于2D数组,numpy需要提供行索引,然后是列索引的列表,并zip(*ix)
提供以下内容:
>>> zip(*ix)
[(1, 3, 2), (2, 4, 4)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句