python - 如何在不干扰顺序的情况下用另一个相同长度的数组对数组进行加权
问题描述
我是 python 新手,我需要用另一个相同长度的数组重新衡量一个数组,而不会干扰顺序,就像我想一个一个地衡量一个组件一样。
我正在尝试使用 NumPy
J1_wt = np.histogram(F2, bins = 30, weights = weigh_Clust)
但这肯定会改变顺序。
我的数据是这样的:
F1=[1.72288135,1.80961059,1.86767127,1.9610155,,2.02323446,2.07557286
,2.17004116,2.22494428,2.29753376,2.3668508,,2.42850874,2.51389674
,2.58029821,2.64361637,2.71345954,2.7655551,,2.82787335,2.8861585
,2.93373297,2.98516628,3.0189053,,3.05360633,3.08751637,3.09396867
,3.08311305,2.98948089,2.80641976,2.55476307,2.36904108,2.10458288]
weigh_Clust = [1.9980e-01,3.5495e-01,5.3415e-01,7.3330e-01,8.7739e-01,1.0000e+00
,8.6047e-01,7.2936e-01,6.0223e-01,5.8059e-01,4.5522e-01,3.3358e-01
,3.2457e-01,2.4599e-01,1.9208e-01,1.8167e-01,1.4581e-01,1.0866e-01
,1.0211e-01,9.1641e-02,5.9966e-02,5.7601e-02,3.7803e-02,2.3540e-02
,2.0282e-02,4.2473e-03,2.8461e-03,2.2244e-03,8.3204e-04,1.9426e-04]
也许简单的乘法就足够了,但我不确定。
有人可以帮我吗?
谢谢
解决方案
不幸的是,不清楚您所说的“用另一个数组重新衡量一个数组”是什么意思。但如果它是元素乘法,那么你可能会这样做
import numpy as np
F1 = np.array(F1)
wC = np.array(weigh_Clust)
F_W = F1*wC
如果您需要标量(=内部)产品,则:
np.dot(F1*wC)
加权平均值是:
np.dot(F1*wC)/np.sum(wC)
毕竟,这可能是您感兴趣的:
def plot():
x = np.arange(F1.shape[0])
with plt.style.context('fivethirtyeight'):
fig = plt.figure(figsize=(22,11))
ax1 = fig.add_subplot(111)
ax1.plot(x,F1,label='F1')
ax1.plot(x,F1*wC,label='F1*wC')
ax1.fill_between(x,F1, F1*wC, color='teal', alpha=0.2)
plt.title('Weighted (F1*wC) against unweighted (F1)', fontweight='bold')
plt.legend();plt.savefig('F1.png');plt.show()
plot()
推荐阅读
- android - Firebase 谷歌登录
- c# - Codedui UWP WaitForControlExist 给出 UITestControlNotFoundException
- javascript - angularjs, HighCharts (Aw, Snap!) 崩溃
- jenkins - 詹金斯:无法连接到 localhost/0:0:0:0:0:0:0:1:9000
- jenkins - Jenkins:在每个节点上只为一个作业运行一个构建
- vba - 旧代码 1004、424、-2147024809 中的新运行时错误 (80070057)
- python-3.x - 序列化由importlib导入的dict时无法腌制/莳萝SwigPyObject
- javascript - Turn base64 Response into PDF
- sql - Oracle Apex 计数和显示列中的条目数
- php - NGINX 位置回退到 Symfony