Python 如何使用相应的RGB阵列绘制二维numpy坐标阵列?

Python 如何使用相应的RGB阵列绘制二维numpy坐标阵列?,python,numpy,matplotlib,imshow,Python,Numpy,Matplotlib,Imshow,我有一个坐标(x,y)的二维numpy数组,其尺寸为40000x2,我正在运行一个机器学习模型。我将预测转换为尺寸为40000x3的RGB numpy数组。RGB数组中的每个条目(行)对应于坐标数组中的相同条目 我希望能够快速地策划一切。以前,我尝试过使用scatter()函数,但时间太长了 # Fragment of code I used before # coordArray (40000x2), rgbArray (40000x3) f, ax = plt.subplots(figsi

我有一个坐标(x,y)的二维numpy数组,其尺寸为40000x2,我正在运行一个机器学习模型。我将预测转换为尺寸为40000x3的RGB numpy数组。RGB数组中的每个条目(行)对应于坐标数组中的相同条目

我希望能够快速地策划一切。以前,我尝试过使用scatter()函数,但时间太长了

# Fragment of code I used before
# coordArray (40000x2), rgbArray (40000x3)

f, ax = plt.subplots(figsize=(7, 7))
for i in range(len(coordArray)):
    ax.scatter(coordArray[i, 0], coordArray[i, 1], marker='o', 
    c=rgbArray[i], s=1.5, alpha=1)
plt.show()

我想知道是否有更好/更快的方法来绘制数据。作为参考,我还绘制了我的训练集和测试集(只是没有在代码片段中显示)。

您可以创建一个合适的
np.array
并用
rgbArray
中的值填充坐标。然后用绘图工具绘制阵列。缺少的坐标将以黑色绘制

将numpy导入为np
将matplotlib.pyplot作为plt导入
#2x2阵列中有3个坐标的示例
#[0,0]>红色
#[0,1]>绿色
#[1,1]>蓝色
#[1,0]->“无信息”
coord=np.数组([[0,0],[0,1],[1,1]])
rgb=np.数组([[1,0,0.],[0,1,0.],[0,0,1.]))
img=np.zero(元组(坐标最大值(0)+1)+(3,))
img[coord[:,0],coord[:,1]=rgb
plt.imshow(img)
plt.轴(“关闭”);
输出:


如果需要散点图,则无需迭代数组。您可以使用:

plt.scatter(坐标[:,0],坐标[:,1],颜色=rgb,s=20);
输出:


使用矢量化代码可能会加快绘图速度:

f,ax=plt.子批次(figsize=(7,7))
散度(coordArray[:,0],coordArray[:,1],
标记='o',c=rgbArray/255,s=1.5,alpha=1)
plt.show()

请注意,
rgbArray
的条目必须在[0,1]范围内。

有没有办法使用浮动?我的坐标数组主要由浮点数组成。您可以在
rgb
数组中使用
floats
。更简单一点。我更新了我的答案,在示例数据中使用
浮动
。对于坐标数据,我需要一个示例。在这种情况下,不迭代的
scatter
解决方案可能更合适。对于“imshow”方法,我们可以将其转换为
int
。如果坐标值不是整数,这种方法将不起作用