Python 我的散点图不起作用

Python my scatter plot not working

我正在绘制浮点 numpy 数组的散点图(使用 matplotlib)。但是我收到错误:

float() argument must be a string or a number.

下面是我的完整代码。我想用两种不同的颜色绘制两个系列。

mu = 0
sigma1 = 1 # mean and standard deviation
x1_1 = np.random.normal(mu, sigma1, 10000)
x1_1 = np.sort(x1_1)

x2_1 = np.random.normal(mu,sigma1,10000)
x2_1 = np.sort(x2_1)

sigma2 = 4 # mean and standard deviation
x1_2 = np.random.normal(mu, sigma2, 10000)
x1_2 = np.sort(x1_2)

x2_2 = np.random.normal(mu, sigma2, 10000)
x2_2 = np.sort(x2_2)

x1 = []
x2 = []
y = 0
for i in xrange(0,10000):
  if y == 0:
    x1.append(x1_1[i])
    x2.append(x2_1[i])
    y = 1
  else:
    x1.append(x1_2[i])
    x2.append(x2_2[i])
    y = 0


x1_np = np.asarray(x1)
x2_np = np.asarray(x2)

print len(x1_np)
print len(x2_np)

x1_train = x1_np[0:500]
x2_train = x2_np[0:500]


x1_train_0 = set(x1_train).intersection(set(x1_1))
x1_train_1 = set(x1_train).intersection(set(x1_2))

x2_train_0 = set(x2_train).intersection(set(x2_1))
x2_train_1 = set(x2_train).intersection(set(x2_2))

print len(x1_train_0)
print len(x1_train_1)
print len(x2_train_0)
print len(x2_train_1)

x1_train_0 = np.asarray(x1_train_0)
x1_train_1 = np.asarray(x1_train_1)

x2_train_0 = np.asarray(x2_train_0)
x2_train_1 = np.asarray(x2_train_1)

plt.scatter(x1_train_0,x2_train_0,c = 'red')
plt.scatter(x1_train_1,x2_train_1,c = 'blue')
plt.show()

要将 python 集合转换为 numpy 数组,您应该先将其转换为 python 列表

x1_train_0 = np.asarray(list(x1_train_0))
x1_train_1 = np.asarray(list(x1_train_1))

x2_train_0 = np.asarray(list(x2_train_0))
x2_train_1 = np.asarray(list(x2_train_1))

你可以在后面写

x1_train_0 = np.asarray(x1_train_0)
x1_train_1 = np.asarray(x1_train_1)

x2_train_0 = np.asarray(x2_train_0)
x2_train_1 = np.asarray(x2_train_1)

这些行:

x1_train_0 = list(x1_train_0.all())
x1_train_1 = list(x1_train_1.all())

x2_train_0 = list(x2_train_0.all())
x2_train_1 = list(x2_train_1.all())

将 numpy.ndarray 转换为列表。