Как разделить каждый элемент столбца этим модулем столбца эффективным способом? - PullRequest
2 голосов
/ 07 ноября 2019

У меня есть большой 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 / module, 1000 / module, 2000 / module, 3000 / module}

Использование циклов for слишком медленно. Как я могу сделать эти вычисления без for циклов?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Как это?

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]])
1 голос
/ 07 ноября 2019
modules = np.sqrt(np.sum(arr * arr, axis=0))
new_arr = arr / modules
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...