工作中經常遇到求矩陣中非零元素個數的個數(l0正規化)
下面介紹幾種方法:
import time
import numpy as np
data = np.array([
[5.0, 3.0, 4.0, 4.0, 0.0],
[3.0, 1.0, 2.0, 3.0, 3.0],
[4.0, 3.0, 4.0, 3.0, 5.0],
[3.0, 3.0, 1.0, 5.0, 4.0],
[1.0, 5.0, 5.0, 2.0, 1.0]
])x,y = data.shape
num = 0
for i in range(0, x):
for j in range(0, y):
if array[i][j] > 0:
num += 1
print("l0 of data is:", num)
這是大多數人多常規思路,但是該方法在小矩陣,或小資料集上沒有問題,一旦遇到大矩陣或者大資料集,效能太低,耗時太長
import time
import numpy as np
data = np.array([
[5.0, 3.0, 4.0, 4.0, 0.0],
[3.0, 1.0, 2.0, 3.0, 3.0],
[4.0, 3.0, 4.0, 3.0, 5.0],
[3.0, 3.0, 1.0, 5.0, 4.0],
[1.0, 5.0, 5.0, 2.0, 1.0]
])data[data < 0 ] = 0
data[data > 0] = 1
num = array.sum()
print("l0 of data is:", num)
這種方式就可以大大提高處理效能,面對大資料集也可以游刃有餘
data[data < threshold ] = 0
data[data > threshold ] = 1
num = array.sum()
print("num of data is:", num)
刪除陣列零元素
演算法訓練 刪除陣列零元素 時間限制 1.0s 記憶體限制 512.0mb 從鍵盤讀入n個整數放入陣列中,編寫函式compactintegers,刪除陣列中所有值為0的元素,其後元素向陣列首端移動。注意,compactintegers函式需要接受陣列及其元素個數作為引數,函式返回值應為刪除操作執行後...
LQB 刪除陣列零元素
從鍵盤讀入n個整數放入陣列中,編寫函式compactintegers,刪除陣列中所有值為0的元素,其後元素向陣列首端移動。注意,compactintegers函式需要接受陣列及其元素個數作為引數,函式返回值應為刪除操作執行後陣列的新元素個數。輸出刪除後陣列中元素的個數並依次輸出陣列元素。樣例輸入 輸...
演算法訓練 刪除陣列零元素
從鍵盤讀入n個整數放入陣列中,編寫函式compactintegers,刪除陣列中所有值為0的元素,其後元素向陣列首端移動。注意,compactintegers函式需要接受陣列及其元素個數作為引數,函式返回值應為刪除操作執行後陣列的新元素個數。輸出刪除後陣列中元素的個數並依次輸出陣列元素。樣例輸入 輸...