Умножьте каждое значение в двумерном массиве на соответствующие значения в другом двумерном массиве. - PullRequest
0 голосов
/ 03 февраля 2019

Как видно из названия, я пытаюсь умножить каждое значение в 2d-массиве на соответствующие значения в другом 2d-массиве.Я могу сделать это и написал следующий код для этого.Однако моя проблема в том, что это занимает слишком много времени, так как каждый 2d массив содержит 1000 массивов, которые содержат 15289 чисел.И я должен сделать это три раза, так как у меня есть три двумерных массива, как это.В настоящее время на их выполнение уходит всего минута (примерно 20 секунд для запуска следующего кода).Это слишком долго, так как у меня есть 100 наборов данных для прохождения через весь мой скрипт, каждый из которых содержит 3 лота этих 2d массивов.Если бы я смог сократить эти 20 секунд, это сэкономило бы мне много времени в долгосрочной перспективе, поскольку все остальное работает гладко!

e_data = [[i*j for i,j in y] for y in np.dstack((e_data,sens_function))]    

e_data - это мои значения радиопотока (для любых радиоастрономов там) и sens_function - другой массив в умножении (это даст мои e_data в нужные мне единицы).Буду очень признателен за любую помощь или совет!

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019
0 голосов
/ 03 февраля 2019

Я думаю, вы слишком усложняете использование вложенных циклов for и dstack.Вы можете просто использовать оператор * (умножение).Для 2d массивов он будет выполнять поэлементное умножение.Смотрите следующий пример:

e_data = np.arange(9).reshape(3,3)
print (arr1)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]

sens_function = np.arange(9).reshape(3,3)
print (arr2)
# [[0 1 2]
#  [3 4 5]
# [6 7 8]]

result = e_data*sens_function
print (result)

# [[ 0  1  4]
# [ 9 16 25]
# [36 49 64]]
...