python 第一行非零 Numpy選擇非零行

2021-10-11 12:51:35 字數 859 閱讀 6768

您可以使用data ==0來檢測所有的零,這將給您乙個布林陣列,然後沿著它的每一行執行np.any。或者,您可以使用data!=0檢測所有非零,然後執行np.all來獲得沒有任何零的行掩碼。在

還可以使用^{}來替換{},我個人認為這很瘋狂,但這是乙個好方法,因為它給我們帶來了顯著的效能提公升,我們稍後將在本解決方案中進行確認。在

因此,下面列出了三種方法。在

方法1:rows_without_zeros = data[~np.any(data==0, axis=1)]

方法2:

^$方法3:rows_without_zeros = data[~np.einsum('ij->i',data ==0)]

執行時測試-

in [130]: %timeit data[np.all(data, axis=1)]

1000 loops, best of 3: 1.09 ms per loop

in [131]: %timeit data[np.all(data!=0, axis=1)]

1000 loops, best of 3: 1.03 ms per loop

in [132]: %timeit data[~np.any(data==0,1)]

1000 loops, best of 3: 1 ms per loop

in [133]: %timeit data[~np.einsum('ij->i',data ==0)]

1000 loops, best of 3: 825 µs per loop

因此,似乎向np.all或np.any提供掩碼比基於非掩碼的方法有一點(大約9%)的效能提公升。使用einsum,您將看到相對於基於np.any和{}的方法,20%的改進,這還不錯!在

Python csv 跳過第一行

python處理csv檔案時,經常需要跳過第一行表頭讀取檔案內容。下面是正常讀取的 import csv with open 2019 04 01.csv r as read file reader csv.reader read file for row in reader print row 如...

一行有幾列為零

方法一 select from select id,t1,case when t1 0 then 1 else 0 end case when t2 0 then 1 else 0 end case when t3 0 then 1 else 0 end case when t4 0 then 1 ...

批量刪除TXT檔案第一行和最後一行

終於實現了把python用起來,記錄一下,環境為python3.7,看了一些網上的方法,但這總算是乙個不錯的開端。import os import os.path import codecs 這裡放著你要操作的資料夾名稱 path c users rym desktop 金融 後復權 後復權a股全 ...