簡體   English   中英

什么是Pandas中的dataframe.loc()的Numpy等價

[英]What is Numpy equivalence of dataframe.loc() in Pandas

我有一個120,000 * 4的numpy數組,如下所示。 每行都是一個樣本。 第一列是秒的時間,或使用Pandas術語的index

0.014      14.175  -29.97  -22.68 
0.022      13.905  -29.835 -22.68
0.030      12.257  -29.32  -22.67
... ...
1259.980   -0.405   2.205   3.825
1259.991   -0.495   2.115   3.735

我想選擇記錄在100.000到200.000秒之間的行並將其保存到新數組中。 如果這是一個Pandas數據幀,我只想寫df.loc[100:200] numpy中的等效操作是什么?

這不是可行性問題。 我只是想知道是否有任何pythonic單行解決方案。

假設索引已排序:

IIUC,

x=np.array([ [1,2,3,4],
           [5,6,7,8],
           [9,10,11,12],
           [13,14,15,16]])

x[(x[:,0] >= 5) & (x[:,0] <= 9) ]

所以你會有100和200而不是5和9。


有關更一般的解決方案,請查看Wen的答案

來自Raf的數據

x[np.where(x[:,0]==5)[0][0]:np.where(x[:,0]==9)[0][0]+1,:]
Out[341]: 
array([[ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

注意

只使用大於和小於不能完全替換.loc.loc的后端是索引位置而不是值范圍

例如

df
Out[348]: 
       0   1   2   3
0      1   2   3   4
1      5   6   7   8
4444   9  10  11  12
3     13  14  15  16

df.loc[1:3]
Out[347]: 
       0   1   2   3
1      5   6   7   8
4444   9  10  11  12
3     13  14  15  16

暫無
暫無

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

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