簡體   English   中英

如何使用熊貓在ndarray上創建索引

[英]How to create an index on a ndarray using pandas

我對熊貓提供的軸索引很感興趣。 我最近使用numpy並有一個數組,該數組將許多粒子(1 ... N)的位置(XYZ)保留多次(0.0 ... T)。 因此,這將是一個三維(T,N,3)數組。

D = random((10,20,3))

現在,我想將熊貓索引添加到適當的軸上,以便更輕松地訪問某些時間范圍或某些原子選擇。 假設我要在數據上附加以下索引標簽:

T_index = arange( 10, dtype='f' )
N_index = arange( 20 )
P_index = ["x","y","z"]

我環顧四周,但沒有找到一種方便地將其添加到熊貓數據框的好方法。 我也不太確定pandas數據框是否真的是我應該使用的數據結構,因為也許它會將最初形式良好的numpy ndarray制動為類似mean()或sum()這樣方便的numpy函數的東西。慢點。

由於您有3個軸,因此定義面板可能是最方便的:

pan = pd.Panel(D, items=T_index, major_axis=N_index, minor_axis=P_index)
# <class 'pandas.core.panel.Panel'>
# Dimensions: 10 (items) x 20 (major_axis) x 3 (minor_axis)
# Items axis: 0.0 to 9.0
# Major_axis axis: 0 to 19
# Minor_axis axis: x to z

然后,如果您希望將其轉換為DataFrame,請使用:

df = pan.to_frame()

pan的基礎數據仍然是一個numpy形狀的數組(10、20、3):

In [50]: pan._data
BlockManager
...
FloatBlock: [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], 10 x 20 x 3, dtype: float64

因此,我不希望速度有任何明顯的下降。 而且,如果需要的話,您總是可以退回到numpy數組pan.values上的numpy操作,但是,這是不必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM