绘制随机数组numpy

时间:2018-06-23 10:56:56

标签: matplotlib random numpy-ndarray

我正在编写一个非常简单的脚本,该脚本使用jupyter笔记本(python 3)绘制了一个罪过。当我放:

import numpy
import matplotlib.pyplot as plt
x=np.arange(0.0,5*np.pi,0.001)
y = np.sin(x)
plt.plot(x,y)

情节很好。

但是:

import numpy
import matplotlib.pyplot as plt
x=np.arange(0.0,5*np.pi,0.001)
np.random.shuffle(x)
y = np.sin(x)
plt.plot(x,y)

图像是 enter image description here

我不明白为什么在我犯罪之前对x进行改组。
谢谢

1 个答案:

答案 0 :(得分:2)

首先让我们简化一下。我们绘制4个点,并按照它们的绘制顺序对其进行注释。

import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt

x=np.arange(4)
y = np.sin(x)

plt.plot(x,y, marker="o")

for i, (xi,yi) in enumerate(zip(x,y)):
    plt.annotate(str(i), xy=(xi,yi), xytext=(0,4), 
                 textcoords="offset points", ha="center")

plt.show()

enter image description here

如果我们洗牌x并绘制相同的图形,则不会,

x=np.arange(4)
np.random.shuffle(x)
y = np.sin(x)

enter image description here

我们看到这些点的位置仍然相同,但是例如以前,第一个点是(0,0)处的点,现在是第三个点。由于这种随机顺序,连接线变成了zickzack。

现在,如果使用足够的点,所有这些线将加起来看起来像一个完整的表面,这就是您在图像中得到的。