基于数组中的值的索引选择系列中的值

2024-05-23 14:46:11 发布

您现在位置:Python中文网/ 问答频道 /正文

比如说我有一个连续剧

mySeries = pd.Series(range(1, 100, 1))
myArray = np.array([[3, 10],[6, 9]])

如何使用myArray中的值作为索引来选择mySeries?你知道吗

我希望得到的数组是np.array([[4,11],[7, 10]])。你知道吗

例如,myArray中的(1,1)元素是3,因此我希望结果数组中的(1,1)元素是mySeries中的第3个元素,即4。你知道吗


Tags: 元素nprange数组arrayseriespd连续剧
3条回答

这里有一个我认为稍微干净一点的替代方法:

>>> newArray = mySeries[myArray.flatten()].values
>>> newArray.shape = myArray.shape
>>> newArray
array([[ 4, 11],
       [ 7, 10]], dtype=int64)
resultArray = np.empty(shape=len(myArray), dtype=np.ndarray)
for i in range(len(myArray)):
    row = np.empty(shape=len(myArray[i]))
    for k in range(len(myArray[i])):
        v = mySeries[myArray[i,k]]
        row[k] = v
    resultArray[i] = row

这是我的解决方案,首先将2dim数组展平为1dim,然后恢复原始形状。你知道吗

import pandas as pd
import numpy as np

mySeries = pd.Series(range(1, 100, 1))
myArray = np.array([[3, 10],[6, 9]])

flatArray = np.asarray(mySeries[myArray.ravel()])
resultArray = flatArray.reshape(myArray.shape)

# Output results
print(resultArray)

输出:

[[ 4 11]
 [ 7 10]]

相关问题 更多 >