gpt4 book ai didi

python - 如何创建一个用零初始化的元组矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:54 30 4
gpt4 key购买 nike

我正在创建图片并使用 numpy。我试过类似的东西但出现错误 data = np.zeros((pic.size[0], pic.size[1],2),dtype= [[(0,0,0)],])我想让它看起来像

[[(0,0,0),(0,0,0),(0,0,0)],[(0,0,0),(0,0,0)]]

我该怎么做?我需要将这些数据放入 putdata() 方法中得到元组矩阵。

最佳答案

当我测试你的第一行时我得到一个错误

In [156]: data=np.zeros((3,4,2),dtype= [[(0,0,0)],])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-156-9f6f75b73353> in <module>()
----> 1 data=np.zeros((3,4,2),dtype= [[(0,0,0)],])

TypeError: data type not understood

这个表达是否适合你?你让它听起来像它。如果不是,您应该清楚错误。

但是元组矩阵到底是什么意思?只是显示的东西

[[(0,0,0),(0,0,0),(0,0,0)],[(0,0,0),(0,0,0)]]

您提到了一个putdata 方法。你说的是什么包?不是 numpy

我可以创建一个像这样显示的结构数组

In [158]: np.zeros((2,2),dtype='i,i,i')
Out[158]:
array([[(0, 0, 0), (0, 0, 0)],
[(0, 0, 0), (0, 0, 0)]],
dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4')])


In [159]: print(np.zeros((2,2),dtype='i,i,i'))
[[(0, 0, 0) (0, 0, 0)]
[(0, 0, 0) (0, 0, 0)]]

从技术上讲,这不包含元组,但它使用元组语法。将其转换为列表可能会更好。

In [160]: np.zeros((2,2),dtype='i,i,i').tolist()
Out[160]: [[(0, 0, 0), (0, 0, 0)], [(0, 0, 0), (0, 0, 0)]]

最后的结果是一个嵌套列表 - 元组列表的列表。

但是内部元素是元组真的很重要吗?

In [179]: np.zeros((2,2,3),int)
Out[179]:
array([[[0, 0, 0],
[0, 0, 0]],

[[0, 0, 0],
[0, 0, 0]]])

In [180]: np.zeros((2,2,3),int).tolist()
Out[180]: [[[0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0]]]

通常在 Python 中列表和元组是可以互换的。

我们需要更多地了解 putdata 方法。

===============

我从搜索中猜测 putdata 是一个 PIL 方法。

在那种情况下,这是可行的:

In [240]: from PIL import Image

In [241]: im=Image.new('RGB',(10,10))
In [243]: im.putdata(np.ones((100,),dtype='i,i,i').tolist())

im.putdata(np.ones((10,10),dtype='i,i,i').tolist()) 不起作用;看起来数据必须是一个平面列表

[(0,0,0),(0,1,0), etc]

im.putdata([(0,1,0)]*100) 也有效,因为它只是元组的简单列表复制。

关于python - 如何创建一个用零初始化的元组矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792774/

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