首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中创建嵌套矩阵

如何在python中创建嵌套矩阵
EN

Stack Overflow用户
提问于 2012-05-13 17:52:12
回答 2查看 2.3K关注 0票数 1

我想知道是否有可能在python中创建一个嵌套矩阵。这里我定义了我的矩阵A

代码语言:javascript
复制
  A = array([[ 12.,   0.],[  0.,   4.]])

我想用一个通用的2x2矩阵替换零,然后用imshow()绘制所有内容。这有可能吗?

我试着这样定义我的嵌套矩阵

代码语言:javascript
复制
  A = array([[ 12.,   array([[ 1.,   1.],[  1.,   1.]])],[  0.,   4.]])

但是我收到了这个错误信息

ValueError:使用序列设置数组元素。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-13 19:48:25

代码语言:javascript
复制
>>> M = NP.empty((5, 5), dtype=NP.object)     # a 2D NumPy array
>>> M
  array([[None, None, None, None, None],
         [None, None, None, None, None],
         [None, None, None, None, None],
         [None, None, None, None, None],
         [None, None, None, None, None]], dtype=object)

现在,您可以插入序列,而无需获取ValueError

代码语言:javascript
复制
>>> M[2,2] = NP.array([4, 3, 5])
>>> M
  array([[None, None, None, None, None],
         [None, None, None, None, None],
         [None, None, [4 3 5], None, None],
         [None, None, None, None, None],
         [None, None, None, None, None]], dtype=object)

>>> M[2,2]
   array([4, 3, 5])

操作的另一部分--将这样的数组传递给Matplotlib的imshow是一个问题。

imshow直观地将2D数组表示为根据x,y索引定位在画布上的点的云。基于将颜色映射到数组值的颜色映射图,根据不同的颜色和颜色强度来指示该索引处的值。因此,imshow的data参数的有效参数为:

  • NumPy 2D arrays

两个(并且只有这两个AFAIK)的高维NumPy数组,imshow可以解释为

  • NumPy rgb元组的2D数组 (x,y,r,b,g)
  • NumPy 6D数组,解释为rgba元组的2D数组 (x,y,r,g,b,a)
票数 2
EN

Stack Overflow用户

发布于 2012-05-13 19:39:09

numpy数组有一个数据类型。在您的第一行中,您创建了这样的A

代码语言:javascript
复制
import numpy as np
A = np.array([[ 12.,   0.],[  0.,   4.]])
A.dtype

将打印dtype('float64')。这就是你想要放在这样一个数组中的所有东西都必须能够被解释为浮点数。

在第二次创建A时,这可能是问题所在。如果你这样做的话:

代码语言:javascript
复制
A = np.array([[ 12.,   np.array([[ 1.,   1.],[  1.,   1.]])],[  0.,   4.]], dtype=np.object)

它将被创建,但是要记住A的形状是2x2。你还应该意识到,数组在所有维度上都必须有规则的大小(数组中不能有任何洞)。也就是说,数组中的每个位置都被视为单个对象(其中一些恰好是数组本身)。

现在,这仍然不适用于imshow,因为它需要一个包含可以解释为数字的元素的二维数组,例如,您的A[0,1]本身就是一个大小为2x2的数组。它不能被解释为一个数字。

因此,如果您想用matplotlib.pyplot.imshow将数组A显示为图像,并弄清楚您希望如何将数据放入该结构中,那么您应该将数组A设计为浮点数的2D数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10570818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档