我想在 Python 中创建一个棋盘分布。
目前我使用以下脚本来创建一个2 x 2大小的棋盘:
import numpy as np
import matplotlib.pyplot as plt
n_points = 1000
n_classes = 2
x = np.random.uniform(-1,1, size=(n_points, n_classes))
mask = np.logical_or(np.logical_and(x[:,0] > 0.0, x[:,1] > 0.0), \
np.logical_and(x[:,0] < 0.0, x[:,1] < 0.0))
y = np.eye(n_classes)[1*mask]
plt.scatter(x[:,0], x[:,1], c=y[:,0], cmap="bwr", alpha=0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这创造了
我想知道是否存在一种简单的方法来概括上述代码以创建大小的棋盘分布n x n?
编辑
使用@jpf 很好的解决方案
import numpy as np
import matplotlib.pyplot as plt
from numpy import sin
n_points = 10000
n_classes = 2
n = 8
x = np.random.uniform(-(n//2)*np.pi, (n//2)*np.pi, size=(n_points, n_classes))
mask = np.logical_or(np.logical_and(sin(x[:,0]) > 0.0, sin(x[:,1]) > 0.0), \
np.logical_and(sin(x[:,0]) < 0.0, sin(x[:,1]) < 0.0))
y = np.eye(n_classes)[1*mask]
plt.scatter(x[:,0], x[:,1], c=y[:,0], s=1, cmap="bwr", alpha=0.5)
plt.savefig("test.png", dpi=150)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我现在可以生成任意大小的棋盘分布:
如何使用像正弦这样的周期函数?
import numpy as np
import matplotlib.pyplot as plt
from numpy import sin
n_points = 10000
n_classes = 2
x = np.random.uniform(-10,10, size=(n_points, n_classes))
mask = np.logical_or(np.logical_and(sin(x[:,0]) > 0.0, sin(x[:,1]) > 0.0), \
np.logical_and(sin(x[:,0]) < 0.0, sin(x[:,1]) < 0.0))
y = np.eye(n_classes)[1*mask]
plt.scatter(x[:,0], x[:,1], c=y[:,0], cmap="bwr", alpha=0.5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |