求矩陣中非零元素個數(L0正規化)

2021-09-24 19:22:21 字數 1111 閱讀 8111

工作中經常遇到求矩陣中非零元素個數的個數(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函式需要接受陣列及其元素個數作為引數,函式返回值應為刪除操作執行後陣列的新元素個數。輸出刪除後陣列中元素的個數並依次輸出陣列元素。樣例輸入 輸...