我有一個熊貓系列索引的二維陣列。想要從熊貓系列中創建一個與索引相對應的值的二維陣列。
例如:
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]])
想退貨:
B = np.array([[1,3,4],[3,4,2]])
我知道我可以這樣做作為一個回圈:
B = np.zeros((2,3))
for i in [0,1]:
B[i,:] = test[idx[i]]
但是,在實踐中需要重復執行此操作,因此希望直接廣播索引位置。熊貓不是必需的,如果更容易的話,很樂意在 numpy 中完成這一切。
uj5u.com熱心網友回復:
像這樣的東西可能會起作用:
A[idx.flatten()].values.reshape(idx.shape)
uj5u.com熱心網友回復:
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。
像這樣索引系列會回傳一個系列 - 根據定義,它是 1d:
In [194]: A[idx.ravel()]
Out[194]:
0 1
2 3
3 4
2 3
3 4
1 2
dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424168.html
上一篇:Numpy可擴展對角矩陣
