[英]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.