【发布时间】:2021-07-08 10:54:15
【问题描述】:
我需要帮助找出以下代码中生成的直方图 A 和 B 存在差异的原因。我是一名物理学家,一些同事和我注意到这一点,因为我们在 python、IDL 和 Matlab 中绘制相同的数据。 Python 和 IDL 有同样的问题,但是 Matlab 没有。 Matlab 总是重现直方图 B。
import numpy as np
import matplotlib.pyplot as plt
t = np.random.randint(-1000,1000,10**3)
# A
tA = t/1000
binsizeA = 0.05
xminA = -1
xmaxA = 1
binsA = np.arange(xminA, xmaxA+binsizeA, binsizeA)
hA, _ , _ = plt.hist(tA, bins=binsA, histtype="step", label="A")
# B
tB = t
binsizeB = 50
xminB = -1000
xmaxB = 1000
binsB = np.arange(xminB, xmaxB+binsizeB, binsizeB)
hB, _ , _ = plt.hist(tB/1000, bins=binsB/1000, histtype="step", label="B")
plt.legend()
plt.show()
print(hA==hB)
原始数据是带有时间标记的测量值,微秒精度保存为整数。问题似乎是当数组除以 1000(从微秒到毫秒)时。有没有办法避免这种情况?
【问题讨论】:
标签: python-3.x matplotlib histogram