gpt4 book ai didi

Python:绘制稀疏矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:32 25 4
gpt4 key购买 nike

我有一个稀疏矩阵 X,形状为 (6000, 300)。我想要像散点图这样的东西,其中有一个点,其中 X(i, j) != 0,否则为空白。我不知道 X 的每一行中有多少个非零条目。X[0] 有 15 个非零条目,X[1] 有 3 个,等等。一行中非零条目的最大数量是 16。

尝试:

  • plt.imshow(X) 由于 X 的形状,会生成又高又瘦的图形。使用 plt.imshow(X,spect='auto) 将水平拉伸(stretch)图形,但点被拉伸(stretch)成为椭圆,并且图形变得难以阅读。
  • ax.spy 也遇到同样的问题。
  • bokeh 看起来很有希望,但确实对我的 jupyter 内核造成了负担。

奖金:

  • X 的非零项是正实数。如果有某种方法可以反射(reflect)它们的大小,那就太好了(例如颜色强度、透明度或跨颜色条)。
  • X 的每 500 行都属于同一类。即 12 个类 * 每个类 500 个观测值(行)= 6000 行。例如。 X[:500] 来自 A 类,X[500:1000] 来自 B 类,等等。按类对点进行颜色编码会很好。目前,我将满足于每 500 行手动添加一条水平线来在类之间进行划分。

最佳答案

您可以使用 nonzero() 查找非零元素并使用 scatter() 绘制点:

import pylab as pl
import numpy as np

a = np.random.rand(6000, 300)
a[a < 0.9999] = 0
r, c = np.nonzero(a)
pl.scatter(r, c, c=a[r, c])

关于Python:绘制稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39970515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com