绘制随机排列的数组 numpy

plot shuffled array numpy

我正在编写一个非常简单的脚本,一个使用 jupyter notebook (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)

图像是

我不明白为什么要在我 运行 sin 之前洗牌。
谢谢

让我们先简单一点。我们绘制了 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()

否,如果我们打乱 x 并绘制相同的图形,

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

我们看到点的位置仍然相同,但是例如以前第一个点是 (0,0) 处的点,现在是第三个出现在那里的点。由于这种随机顺序,连接线会曲折。

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