尝试从稀疏矩阵制作图形:没有足够的值可解包(预期2,得到0)

恨计算机爱物理

因此,我正在尝试制作一个正方形的图,该正方形根据存储在7x7矩阵“ nprob”中的概率密度进行着色。

nprob = prob/sum
print(nprob.todense())

x,y = np.meshgrid(np.arange(0,7,1),np.arange(0,7,1)) 
fig, dens = plt.subplots()
dens.set_title('probability density for...')
dens.set_xlabel('i')
dens.set_ylabel('t')
m = dens.pcolormesh(x, y, nprob[x,y], cmap = 'Blues', shading='auto')
cbar=plt.colorbar(m)

我收到以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-132-6d9dfcd16dcc> in <module>
      9 dens.set_xlabel('i')
     10 dens.set_ylabel('t')
---> 11 m = dens.pcolormesh(x, y, nprob[x,y], cmap = 'Blues', shading='auto')
     12 cbar=plt.colorbar(m)

/opt/miniconda3/lib/python3.8/site-packages/matplotlib/__init__.py in inner(ax, data, *args, **kwargs)
   1445     def inner(ax, *args, data=None, **kwargs):
   1446         if data is None:
-> 1447             return func(ax, *map(sanitize_sequence, args), **kwargs)
   1448 
   1449         bound = new_sig.bind(ax, *args, **kwargs)

/opt/miniconda3/lib/python3.8/site-packages/matplotlib/axes/_axes.py in pcolormesh(self, alpha, norm, cmap, vmin, vmax, shading, antialiased, *args, **kwargs)
   6090         kwargs.setdefault('edgecolors', 'None')
   6091 
-> 6092         X, Y, C, shading = self._pcolorargs('pcolormesh', *args,
   6093                                             shading=shading, kwargs=kwargs)
   6094         Ny, Nx = X.shape

/opt/miniconda3/lib/python3.8/site-packages/matplotlib/axes/_axes.py in _pcolorargs(self, funcname, shading, *args, **kwargs)
   5583                 if isinstance(Y, np.ma.core.MaskedArray):
   5584                     Y = Y.data
-> 5585             nrows, ncols = C.shape
   5586         else:
   5587             raise TypeError(f'{funcname}() takes 1 or 3 positional arguments '

ValueError: not enough values to unpack (expected 2, got 0)

老实说,我经常会遇到这个错误,而且我通常会重新整理一下,直到发现一个我更了解的错误为止,因此可能是时候了解它的含义了。不清楚的是什么?我希望它绘制网格上49个指定点处的概率密度图。

hpaulj

制作一个样本稀疏矩阵(您可能已经提供了一个:():

In [31]: from scipy import sparse
In [32]: nprob = sparse.csr_matrix(np.eye(7))
In [33]: nprob
Out[33]: 
<7x7 sparse matrix of type '<class 'numpy.float64'>'
    with 7 stored elements in Compressed Sparse Row format>
In [34]: nprob.A
Out[34]: 
array([[1., 0., 0., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0., 0.],
       [0., 0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 0., 1.]])
In [35]: x,y = np.meshgrid(np.arange(0,7,1),np.arange(0,7,1))

注意索引的作用-不多-它仍然是csr矩阵:

In [36]: nprob[x,y]
Out[36]: 
<7x7 sparse matrix of type '<class 'numpy.float64'>'
    with 7 stored elements in Compressed Sparse Row format>

现在您的情节:

In [37]: fig, dens = plt.subplots()
    ...: dens.set_title('probability density for...')
    ...: dens.set_xlabel('i')
    ...: dens.set_ylabel('t')
Out[37]: Text(0, 0.5, 't')
In [38]: m = dens.pcolormesh(x, y, nprob[x,y], cmap = 'Blues', shading='auto')
Traceback (most recent call last):
  File "<ipython-input-38-62cf80a40eaf>", line 1, in <module>
    m = dens.pcolormesh(x, y, nprob[x,y], cmap = 'Blues', shading='auto')
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/__init__.py", line 1438, in inner
    return func(ax, *map(sanitize_sequence, args), **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/axes/_axes.py", line 6093, in pcolormesh
    X, Y, C, shading = self._pcolorargs('pcolormesh', *args,
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/axes/_axes.py", line 5582, in _pcolorargs
    nrows, ncols = C.shape
ValueError: not enough values to unpack (expected 2, got 0)

但是,如果我们绘制该矩阵的密集版本,该怎么办:

In [39]: m = dens.pcolormesh(x, y, nprob[x,y].A, cmap = 'Blues', shading='auto')
    

有用。

plt对稀疏矩阵一无所知。我怀疑它只是在做:

In [41]: np.array(nprob)
Out[41]: 
array(<7x7 sparse matrix of type '<class 'numpy.float64'>'
    with 7 stored elements in Compressed Sparse Row format>, dtype=object)
In [42]: _.shape
Out[42]: ()

那是一个0d对象dtype数组,而不是plot函数期望的2d数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python ValueError:没有足够的值可解包(预期3,得到2)

来自分类Dev

cv.findContours()-ValueError:没有足够的值可解包(预期3,得到2)

来自分类Dev

python3:没有足够的值来解包(预期为 2,得到 0)

来自分类Dev

ValueError:没有足够的值可解包(预期11,得到1)

来自分类Dev

ValueError:没有足够的值可解包(预期为4,得到1)

来自分类Dev

Python ValueError:没有足够的值可解包(预期3,得到1)

来自分类Dev

ValueError:尝试解包python中的dict以对熊猫进行数据标记时,没有足够的值要解包(预期2,得到1)

来自分类Dev

如何修复 Python 错误:没有足够的值来解包(预期 2,得到 1)

来自分类Dev

如何修复“没有足够的值来解包(预期为 2,得到 1)”错误

来自分类Dev

Spacy.io实体链接器“没有足够的值要解压(预期2,得到0)”

来自分类Dev

Pyspark错误ValueError:尝试与groupByKey分组时,没有足够的值要解压(预期2,得到1)

来自分类Dev

如何解决此“ ValueError:没有足够的值要解压(预期3,得到2)”?

来自分类Dev

python的棉花糖给出ValueError:没有足够的值要解压(预期2,得到1)

来自分类Dev

ValueError:没有足够的值可解压缩(预期2,得到1)-将文件从一个位置移到另一个位置后,出现此错误

来自分类Dev

ValueError : 没有足够的值来解包。为什么?

来自分类Dev

如何处理scipy最小化ValueError:没有足够的值要解压(预期4,得到3)?

来自分类Dev

如何解决 ValueError:没有足够的值来解包错误

来自分类Dev

如何修复列表错误没有足够的值来解包

来自分类Dev

Python cv2没有足够的值来解压

来自分类Dev

尝试制作图库

来自分类Dev

如何制作图形对象的副本?

来自分类Dev

如何在Python中制作图形?

来自分类Dev

用Javascript制作图形-问题

来自分类Dev

我的图形卡死了,或者没有足够的电量?

来自分类Dev

GridBagLayout没有得到预期的结果

来自分类Dev

jq没有得到预期的输出

来自分类Dev

setMinutes没有得到预期的结果

来自分类Dev

$GLOBALS 没有得到预期的数据

来自分类Dev

没有从 for 循环中得到预期的结果

Related 相关文章

  1. 1

    Python ValueError:没有足够的值可解包(预期3,得到2)

  2. 2

    cv.findContours()-ValueError:没有足够的值可解包(预期3,得到2)

  3. 3

    python3:没有足够的值来解包(预期为 2,得到 0)

  4. 4

    ValueError:没有足够的值可解包(预期11,得到1)

  5. 5

    ValueError:没有足够的值可解包(预期为4,得到1)

  6. 6

    Python ValueError:没有足够的值可解包(预期3,得到1)

  7. 7

    ValueError:尝试解包python中的dict以对熊猫进行数据标记时,没有足够的值要解包(预期2,得到1)

  8. 8

    如何修复 Python 错误:没有足够的值来解包(预期 2,得到 1)

  9. 9

    如何修复“没有足够的值来解包(预期为 2,得到 1)”错误

  10. 10

    Spacy.io实体链接器“没有足够的值要解压(预期2,得到0)”

  11. 11

    Pyspark错误ValueError:尝试与groupByKey分组时,没有足够的值要解压(预期2,得到1)

  12. 12

    如何解决此“ ValueError:没有足够的值要解压(预期3,得到2)”?

  13. 13

    python的棉花糖给出ValueError:没有足够的值要解压(预期2,得到1)

  14. 14

    ValueError:没有足够的值可解压缩(预期2,得到1)-将文件从一个位置移到另一个位置后,出现此错误

  15. 15

    ValueError : 没有足够的值来解包。为什么?

  16. 16

    如何处理scipy最小化ValueError:没有足够的值要解压(预期4,得到3)?

  17. 17

    如何解决 ValueError:没有足够的值来解包错误

  18. 18

    如何修复列表错误没有足够的值来解包

  19. 19

    Python cv2没有足够的值来解压

  20. 20

    尝试制作图库

  21. 21

    如何制作图形对象的副本?

  22. 22

    如何在Python中制作图形?

  23. 23

    用Javascript制作图形-问题

  24. 24

    我的图形卡死了,或者没有足够的电量?

  25. 25

    GridBagLayout没有得到预期的结果

  26. 26

    jq没有得到预期的输出

  27. 27

    setMinutes没有得到预期的结果

  28. 28

    $GLOBALS 没有得到预期的数据

  29. 29

    没有从 for 循环中得到预期的结果

热门标签

归档