是python的新手,但具有一定的c#经验,并尝试创建一个基本脚本来计算一组随机生成的整数的标准差。在下面的代码中生成的两个直方图是不同的,尽管据我所知它们应该是相同的,因为我从未修改过生成两个直方图之间的变量“收入”。
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
npoints = 10000
incomes = np.random.normal(100.0, 50.0, npoints)
################
plt.hist(incomes, 50)
plt.show()
###############
incomestore = incomes
meanincomes = np.mean(incomes)
for i in range(incomes.size):
incomestore[i] = (incomes[i] - meanincomes)**(2)
standardDeviation = np.sqrt(np.mean(incomestore))
print(standardDeviation)
###############
plt.hist(incomes, 50)
plt.show()
##############
由代码生成的两个直方图在它们应该相同时是不同的(不是缩放错误)。
答案 0 :(得分:2)
incomestore
和incomes
引用相同的数组。您必须进行复制
incomestore = incomes.copy()
但是最好使用numpy的向量功能:
incomestore = (incomes - incomes.mean()) ** 2
standardDeviation = incomestore.mean() ** 0.5