Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为每个numpy列指定不同的权重_Python_Arrays_Numpy - Fatal编程技术网

Python 为每个numpy列指定不同的权重

Python 为每个numpy列指定不同的权重,python,arrays,numpy,Python,Arrays,Numpy,我有以下numpy数组: from sklearn.decomposition import PCA from sklearn.preprocessing import normalize import numpy as np # NumPy array comprising associate metrics # i.e. Open TA's, Open SR's, Open SE's associateMetrics = np.array([[11, 28, 21], [27,

我有以下numpy数组:

from sklearn.decomposition import PCA
from sklearn.preprocessing import normalize
import numpy as np

# NumPy array comprising associate metrics
# i.e. Open TA's, Open SR's, Open SE's
associateMetrics = np.array([[11,  28,  21],
   [27,  17,  20],
   [19,  31,  3],
   [17,  24,  17]]).astype(np.float64)
print("raw metrics=", associateMetrics)
现在,我想为上述数组中的每一列指定不同的权重&稍后将其标准化。例如,假设我想通过乘以5,将第2列乘以3,将最后一列乘以2来为第1列分配更高的权重

如何在python中实现这一点?抱歉,python和numpy有点陌生

我只在一篇专栏文章中尝试过这一点,但它不起作用:

# Assign weights to metrics
weightedMetrics = associateMetrics
np.multiply(2, weightedMetrics[:,0])
print("weighted metrics=", weightedMetrics)

你应该利用numpy的。这意味着可以自动扩展低维数组,以对高维(但兼容)数组执行向量化操作。在您的特定情况下,您可以将
(4,3)
形状的数组与
(3,)
形状的1d权重数组相乘,并获得您想要的:

weightedMetrics = associateMetrics * np.array([5,3,2])
诀窍在于,您可以想象numpy
ndarray
s具有领先的单态维度,沿着该维度广播是自动的。我的意思是,您的1d numpy weight数组的形状
(3,)
可以被认为是具有领先的单态维度(但仅从广播的角度来看!)。很容易看出shape
(4,3)
(1,3)
的数组应该如何相乘:后者的每个元素都必须用于前者的整列


在非常一般的情况下,您甚至可以对shape
(3,1,3,1,4)
数组和shape
(2,3,4,4)
数组进行算术运算。重要的是,满足的维度应该一致,或者其中一个数组在该位置应该有一个单态维度,并且其中一个数组允许更长(在前面)

我找到了答案。这就是我使用的:

print("weighted metrics=", np.multiply([ 1,   2,   3], associateMetrics))