从矩阵列表中创建包含每个矩阵第i个和第j个元素的数组

0 投票
3 回答
33 浏览
提问于 2025-04-14 16:38

我有一组矩阵,每个矩阵里包含了某一时刻屏幕上像素的值。比如,矩阵1包含了时刻1的像素值,矩阵2包含了时刻2的像素值,以此类推。假设我想看看某个特定像素是如何随时间变化的。

我创建了一些测试用的矩阵,看看这个过程是怎么进行的,并把它们放在了mylist里:

m1=[[1,2],[3,4]]
m2=[[1,2],[3,4]]
m3=[[5,6],[7,8]]

mylist=[m1,m2,m3]

print(mylist)

接着,我想选取第二个矩阵中的(0,0)这个元素:


print(mylist[1][1][0])

这样我得到了预期的结果1

然后我想把这个操作推广一下,选取每个矩阵中的(0,0)元素,期望得到的结果是mynewlist=[1,1,5]

mynewlist=[]

for i in 2:
    mynewlist.append(mylist[i][1][0])
    
print("hello hello")
print(mynewlist)

但是,这时我却收到了错误信息:

for i in 2:
TypeError: 'int' object is not iterable 

我哪里出错了?

我该如何解决这个问题?有没有其他更简单、更好的方法来从每个矩阵中选取(i,j)这个元素呢?

3 个回答

1

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序里使用这些数据。这个过程就像是从冰箱里拿食材,然后用这些食材做饭一样。

当我们提到“数据处理”时,实际上是在说如何把这些原始的数据变得更有用。比如说,原始的数据可能是一些数字或文字,而我们需要把它们整理成表格,或者计算出一些统计信息。

在这个过程中,我们可能会用到一些工具和方法,就像做饭时需要用到刀、锅和调料一样。这些工具可以帮助我们更快、更有效地完成任务。

总之,数据处理就是把原始的数据变得更有用的一个过程,帮助我们更好地理解和使用这些数据。

for i in range(len(mylist)):
    mynewlist.append(mylist[i][0][0])
1

你犯了一个简单的错误,忘记用了范围函数,这样它才能像一个可迭代的对象一样工作。

for i in range(2):
    mynewlist.append(mylist[i][1][0])

没有这个函数,i 其实无法遍历多个值,因为它只看到一个 2。不过,@Bart van Woesik 提出了一个更优雅的解决方案,这样你就不需要实际去计算值的数量并设置范围了。

2

一个更好的方法是直接遍历我的列表中的元素,像这样:

   mynewlist = [] 
   for image in mylist:
       mynewlist.append(image[1][0])

这样可以让你的代码更容易阅读。而且现在你初始列表中有多少张图片都没关系了。

撰写回答