首页 > 解决方案 > 如何通过此列模块有效的方式划分列的每个元素?

问题描述

我有一个大np.array

[1.,    2.,    3.,    ...]
[1000., 1001., 1002., ...]
[2000., 2001., 3002., ...]
[3000., 3001., 3002., ...]

例如。我想将每列中的每个元素除以该列的模块。这是第一列的示例:

col_1 = {1, 1000, 2000, 3000}

module_col_1 =

new_col_1 = {1/模块、1000/模块、2000/模块、3000/模块}

使用for循环太慢了。我怎么能在没有for循环的情况下进行这个计算?

标签: pythonnumpy

解决方案


像这样?

M = np.array([[1,2,3],[1000,1001,2002],[2000,2001,2002]])
M / np.sqrt(np.sum(M**2,axis=0))
array([[4.47213551e-04, 8.93890482e-04, 1.05959998e-03],
       [4.47213551e-01, 4.47392186e-01, 7.07106384e-01],
       [8.94427102e-01, 8.94337427e-01, 7.07106384e-01]])

推荐阅读