我想生成6个总是等于1000000次的随机数(权重),并将其与作为csv文件导入的数据列相乘。将总和存储在另一列(加权平均)中,并在新列(范围)中找到最大值和最小值之间的差值。我想重复这个过程1000000次,得到最小的范围和生成的随机数(权重)集。你知道吗
以下是我迄今为止所做的: 1.生成6个随机数 2.从csv导入数据 三。将数据随机数与csv文件中的数据相乘,得出平均值(加权平均值) 4将加权平均值保存在新的F(x)列中 5查找范围 6重复这个1000000次,得到给我最小范围的随机数。你知道吗
这是文件中的一些数据
A B C D E F F(x)
0 4.9 3.9 6.3 3.4 7.3 3.4 0.0
1 4.1 3.7 7.7 2.8 5.5 3.9 0.0
2 6.0 6.0 4.0 3.1 3.7 4.3 0.0
3 5.6 6.3 6.6 4.6 8.3 4.6 0.0
目前所有F(x)的值都是0.0,这是不应该的。你知道吗
arr = np.array(np.random.dirichlet(np.ones(6), size=1))
arr=pd.DataFrame(arr)
ar=(arr.iloc[0])
df = pd.read_csv('weit.csv')
df['F(x)']=df.mul(ar).sum(1)
df
df['F(x)'].max() - df['F(x)'].min()
我所有的加权平均值都是0。我需要得到加权平均数
我不能循环代码运行1000000次,让我的最小范围。你知道吗
如果正确理解您的需求:
生成二维数组,其中6个“列”和N个“行”由this填充唯一的随机数:
然后将数据帧中的值转换为二维numpy数组:
最后将两个数组合并为三维数组并按轴求和} :
2
,最后用于减去最大值和最小值^{另一个带有^{} 的解决方案:
用于比较的循环解决方案,但速度慢,N大:
相关问题 更多 >
编程相关推荐