Python生成点集并丢弃初始点后使用plt.scatter绘制散点图问题
实现代码及修正说明
你原有代码的核心问题如下:
- 循环内直接覆盖整个x数组变量,没有按索引写入每个点的坐标,同时赋值内容为字符串而非可执行的数值计算逻辑
- 未预留要丢弃的初始点的生成空间,也没有做切片丢弃逻辑
plt.scatter()需要分别传入x、y轴的坐标序列,不能直接传入二维数组作为第一个参数
以下是可直接运行的实现,以丢弃前100个初始点、最终保留1000个点为例:
import numpy as np import matplotlib.pyplot as plt # 自定义参数:需要保留的点数量、要丢弃的初始点数量 keep_count = 1000 drop_count = 100 total_count = keep_count + drop_count # 初始化存储所有生成点的数组 all_points = np.zeros((total_count, 2)) # 点生成迭代逻辑,可替换为你自己的规则 for i in range(1, total_count): # 此处为原示例逻辑的可运行实现,你可以替换为自己的迭代公式 all_points[i] = all_points[i-1] + np.array([i, i]) / 2 # 丢弃前N个初始点,拿到最终有效点集 valid_points = all_points[drop_count:] # 绘制散点图,分别取x、y坐标列传入 plt.scatter(valid_points[:, 0], valid_points[:, 1], s=15) plt.xlabel('X') plt.ylabel('Y') plt.show()
额外说明:
- 若你有自己的迭代生成规则,直接替换循环内
all_points[i]的赋值逻辑即可 - 要调整丢弃的初始点数量,仅需要修改
drop_count的参数值即可 - 如果你生成点集的逻辑支持向量化运算,可以替换for循环提升运行效率
内容的提问来源于stack exchange,提问作者N.A.
相关产品推荐
相关产品推荐

