[英]Using : for multiple slicing in list or numpy array
我在嘗試弄清楚如何提取列表中多個索引分開的值時遇到了一些困難。 例如,給定列表l = [0,1,2,3,4,5,6,7,8,9,10]
,我只想提取值[1,2,3] and [6,7,8,9]
。 我可以做l[1:4]+l[6:-1]
,但是有寫l[1:4,6:-1]
嗎?
對於我在熊貓數據框中遇到的實際問題,這確實是一個鬼問題。 我有一個數據框df
,其列為['A','B','C','I1','D','E','F','I2','I3']
和想要保留重要的列['I1', 'I2', 'I3']
。 現在,我目前正在使用的方法是
df.drop(df.columns[0:3], axis=1, inplace=True)
df.drop(df.columns[4:7], axis=1, inplace=True)
有沒有辦法做到這一點,而我們可以在一行中完成而無需顯式寫出列值?
謝謝!
PS。 我知道pandas數據幀使用numpy,也沒有在numpy中找到任何解決方法,但是我認為刪除列的語法是標准的python列表格式,如果有的話。
編輯:我找到了一種方法來為numpy做到這一點,但從這個問題也是2行。 我們可以做的:
indices = np.hstack((np.arange(0:3), np.arange(4:7))
df.drop(df.columns[indices], axis=1, inplace=True)
但是,我仍在尋找1行通用方法。
我認為您需要numpy.r_
來合並索引:
print (np.r_[1:4, 6:10])
[1 2 3 6 7 8 9]
使用列表推導,您可以執行以下操作:
>>> [item for item in l[1:4] + l[6:-1]]
[1, 2, 3, 6, 7, 8, 9]
您也可以像這樣使用extend()
:
>>> res = l[1:4]
>>> res.extend(l[6:-1])
>>> res
[1, 2, 3, 6, 7, 8, 9]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.