您可以使用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股全 ...