从索引位置数组中获取 pandas 系列的值
Get values of pandas series from a array of index locations
我有一个 pandas 系列索引的二维数组。想创建一个二维数组,其中包含与索引相对应的 pandas 系列中的值。
例如:
import pandas as pd
import numpy as np
A = pd.Series(data=[1,2,3,4,5])
idx = np.array([[0,2,3],[2,3,1]])
想return:
B = np.array([[1,3,4],[3,4,2]])
我知道我可以循环执行此操作:
B = np.zeros((2,3))
for i in [0,1]:
B[i,:] = test[idx[i]]
然而,在实践中需要重复执行此操作,因此想直接广播索引位置。 Pandas 不是必需的,如果更容易的话,很乐意在 numpy 中全部完成。
类似这样的方法可能有效:
A[idx.flatten()].values.reshape(idx.shape)
A[idx]
给出 Cannot index with multidimensional key
错误。
In [190]: A = pd.Series(data=[1,2,3,4,5])
...: idx = np.array([[0,2,3],[2,3,1]])
但是从系列派生的一维数组可以这样索引:
In [191]: A.values
Out[191]: array([1, 2, 3, 4, 5])
In [192]: A.values[idx]
Out[192]:
array([[1, 3, 4],
[3, 4, 2]])
numpy
返回维度与 idx
.
匹配的数组没有问题
像这样索引系列 returns 一个系列 - 根据定义是 1d:
In [194]: A[idx.ravel()]
Out[194]:
0 1
2 3
3 4
2 3
3 4
1 2
dtype: int64
我有一个 pandas 系列索引的二维数组。想创建一个二维数组,其中包含与索引相对应的 pandas 系列中的值。
例如:
import pandas as pd
import numpy as np
A = pd.Series(data=[1,2,3,4,5])
idx = np.array([[0,2,3],[2,3,1]])
想return:
B = np.array([[1,3,4],[3,4,2]])
我知道我可以循环执行此操作:
B = np.zeros((2,3))
for i in [0,1]:
B[i,:] = test[idx[i]]
然而,在实践中需要重复执行此操作,因此想直接广播索引位置。 Pandas 不是必需的,如果更容易的话,很乐意在 numpy 中全部完成。
类似这样的方法可能有效:
A[idx.flatten()].values.reshape(idx.shape)
A[idx]
给出 Cannot index with multidimensional key
错误。
In [190]: A = pd.Series(data=[1,2,3,4,5])
...: idx = np.array([[0,2,3],[2,3,1]])
但是从系列派生的一维数组可以这样索引:
In [191]: A.values
Out[191]: array([1, 2, 3, 4, 5])
In [192]: A.values[idx]
Out[192]:
array([[1, 3, 4],
[3, 4, 2]])
numpy
返回维度与 idx
.
像这样索引系列 returns 一个系列 - 根据定义是 1d:
In [194]: A[idx.ravel()]
Out[194]:
0 1
2 3
3 4
2 3
3 4
1 2
dtype: int64