У меня есть матрица отсчетов,Numpy процентов вдоль оси в 2d массива
import numpy as np
x = np.array([[ 1,2,3],[1,4,6],[2,3,7]])
И мне нужен проценты от общего вдоль оси = 1:
for i in range(x.shape[0]):
for j in range(x.shape[1]):
x[i,j] = x[i,j]/np.sum(x[i,:])
In Numpy формы широковещательной передачи.
В настоящее время у меня есть:
x_sums = np.sum(x,axis=1)
for j in range(x.shape[1]):
x[:,j] = x[:,j]/x_sums[:]
который ставит большую часть сложности в Numpy кода ... но NumPy один лайнер будет лучше.
Кроме того,
def percentages(a):
return a/np.sum(a)
x_percentages = np.apply_along_axis(percentages,1,x)
Но до сих пор включает в себя питона.
np.linalg.norm
очень близко, с точки зрения того, что происходит, но у них есть только 8 жёстко прописанные нормы, которые не включают в себя процент от общей суммы.
Тогда есть np.percentile
, который снова близок ... но он вычисляет отсортированный процентиль.
Nice! Я думаю, что это будет сделано. спасибо – bordeo