如何使用具有值索引的另一个数组获取数组中的值?

How to get values in an array using another array with the indexes of the values?

我有一个浮点数数组(大小为 9300)和另一个整数数组(大小为 2600),其索引为第一个数组。我试图根据第二个数组中的索引获取第一个数组中的值。示例:

index   1st_array
0       12.00
1       3.89 
2       24.20
3       34.60

index  2nd_array
0       0
1       2

输出:

index      3nd_array
0          12.00
1          24.20

编辑:这些实际上是 numpy 数组:

a1 = np.array([12.00, 3.89, 24.20, 34.60])
a2 = np.array([0, 2])
import numpy as np
arr1 = np.array([12.00, 3.89, 24.20, 34.60])
arr2 = np.array([0, 2])
print(arr1[arr2])

打印

[12.  24.2]

如果您有两个系列 s1s2,请使用:

s1.loc[s2]

示例:

s1 = pd.Series(['a', 'b', 'c', 'd'])
s2 = pd.Series([0, 2])

s1.loc[s2]
0    a
2    c
dtype: object

对于 numpy 数组

a1[a2]

示例:

a1 = np.array(['a', 'b', 'c', 'd'])
a2 = np.array([0, 2])

a1[a2]
array(['a', 'c'], dtype='<U1')

对于数据帧:

df1.set_index('index').loc[df2['2nd_array']].reset_index()

注意。 set_index/reset_index 仅当“索引”是列

时才需要

示例:

df1 = pd.DataFrame({'index': [0, 1, 2, 3], 
                    '1st_array': [12.0, 3.89, 24.2, 34.6]})

df2 = pd.DataFrame({'index': [0, 1],
                    '2nd_array': [0, 2]})

(df1
 .set_index('index')
 .loc[df2['2nd_array']]
 .reset_index()
 )

   index  1st_array
0      0       12.0
1      2       24.2