Skip to main content
 首页 » 编程设计

python之如何使用numpy在for循环中向量化矩阵和

2025年05月04日16freeliver54

基本上我有一个行数=3600 和列数=5 的矩阵,并希望将其下采样到 60 行的地 block :

import numpy as np 
 
X = np.random.rand(3600,5) 
 
down_sample = 60 
ds_rng = range(0,X.shape[0],down_sample) 
X_ds = np.zeros((ds_rng.__len__(),X.shape[1])) 
 
i = 0 
for j in ds_rng: 
    X_ds[i,:] = np.sum( X[j:j+down_sample,:], axis=0 ) 
    i += 1 

请您参考如下方法:

另一种方法可能是:

def blockwise_sum(X, down_sample=60): 
    n, m = X.shape 
 
    ds_n = n / down_sample 
    N = ds_n * down_sample 
 
    if N == n: 
        return np.sum(X.reshape(-1, down_sample, m), axis=1) 
 
    X_ds = np.zeros((ds_n + 1, m)) 
    X_ds[:ds_n] = np.sum(X[:N].reshape(-1, down_sample, m), axis=1) 
    X_ds[-1] = np.sum(X[N:], axis=0) 
 
    return X_ds 

不过我不知道它是否更快。