Как получить 2D nparray, применяя различные функции к каждому элементу в 1D nparray? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть длина n массив numpy, называемый data. Для каждого элемента в data я хочу применить k различных функций (в частности, scipy.stats.norm.pdf с k различными средствами) и получить массив n x k 2D. Есть ли быстрый способ сделать это без циклического прохождения всех элементов в data?

Я пытался написать это с помощью циклов, но я бы хотел, чтобы он имел лучшую производительность. Не удалось найти в документации никаких ресурсов о том, как применить несколько функций к массиву 1d и развернуть его до 2d nparray.

Ответы [ 2 ]

1 голос
/ 21 октября 2019

scipy.stats.norm векторизовано в своих параметрах. Вы можете просто сделать:

import numpy as np
from scipy import stats

data,means = np.ogrid[-3:3:13j,-1:1:5j]
stats.norm(loc=means).pdf(data)
1 голос
/ 21 октября 2019

Это должно сработать, просто замените данные фактическим списком:

from scipy.stats import norm
import numpy as np
data = [1,2,3]
new_list = list(map(norm.pdf , data))
new_array = np.array([data, new_list])
print(new_array)

Вывод

[[1.         2.         3.        ]
 [0.24197072 0.05399097 0.00443185]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...