我想知道是否可以在 python 中创建一个嵌套矩阵。这里我定义了我的矩阵 A
A = array([[ 12., 0.],[ 0., 4.]])
我想用通用 2x2 矩阵替换零,然后使用 imshow()
绘制所有内容。这可能吗?
我尝试用这种方式定义嵌套矩阵
A = array([[ 12., array([[ 1., 1.],[ 1., 1.]])],[ 0., 4.]])
但我收到此错误消息
ValueError:使用序列设置数组元素。
最佳答案
>>> 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
>>> 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])
OP 的另一部分——将这样的数组传递给 Matplotlib 的 imshow 是一个问题。
imshow 将 2D 数组直观地表示为根据 x、y 索引定位在 Canvas 上的点云。该索引处的值根据基于将颜色映射到数组值的颜色图的不同颜色和颜色强度来指示。因此,imshow 数据参数的有效参数是:
- NumPy 二维数组
两个更高维度的 NumPy 数组(并且只有这两个 AFAIK),imshow 可以解释为
rgb 元组(x、y、r、b、g)的 NumPy 二维数组
NumPy 6D 数组,被解释为 rgba 的 2D 数组 元组 (x, y, r, g, b, a)
关于python - 如何在Python中创建嵌套矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570818/