Python:数组正在修改,我不明白为什么

时间:2019-08-07 09:00:22

标签: python arrays numpy

是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()
##############

由代码生成的两个直方图在它们应该相同时是不同的(不是缩放错误)。

1 个答案:

答案 0 :(得分:2)

incomestoreincomes引用相同的数组。您必须进行复制

incomestore = incomes.copy()

但是最好使用numpy的向量功能:

incomestore = (incomes - incomes.mean()) ** 2
standardDeviation = incomestore.mean() ** 0.5