gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:26 25 4
gpt4 key购买 nike

基本上我有一个行数=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

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

关于python - 如何使用numpy在for循环中向量化矩阵和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com