gpt4 book ai didi

python - 创建移位矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:31 24 4
gpt4 key购买 nike

我正在尝试生成一个以对角线方式移动值的矩阵,我不熟悉数学术语,但这一定是非常默认的东西。

我的尝试给了我:

[(0, 0), (1, 1), (2, 2)]
[(3, 0), (4, 1), (5, 2)]
[(6, 0), (7, 1), (8, 2)]

我想要(注意离起点越远,值越高,同时注意对角线偏移)

[(0, 0), (1, 1), (2, 2)]
[(3, 1), (4, 1), (5, 2)]
[(6, 2), (7, 2), (8, 2)]

我已经尝试使用 collections.deque 来达到这个目的,但它似乎不是可行的方法

最佳答案

您需要编写几个循环来处理移位并打开一个新矩阵来接受移位(因为元组是不可变的)。

matrix = [[(0, 0), (1, 1), (2, 2)], [(3, 0), (4, 1), (5, 2)], [(6, 0), (7, 1), (8, 2)]]

shifted_matrix = [[] for _ in range(len(matrix))]
for i in xrange(len(matrix)):
for j in xrange(len(matrix[i])):
if i-j >= 0:
shifted_matrix[i].append((matrix[i][j][0], matrix[i][j][1] + i-j))
else:
shifted_matrix[i].append((matrix[i][j][0], matrix[i][j][1]))

我不太清楚“开始”矩阵是什么意思,但我假设您想要一个可以在任何矩阵上调用的函数?下面是重新格式化以接受矩阵作为参数并返回移位矩阵的相同代码。

def diagonalize_matrix(matrix):
shifted_matrix = [[] for _ in range(len(matrix))]
for i in xrange(len(matrix)):
for j in xrange(len(matrix[i])):
if i-j >= 0:
shifted_matrix[i].append((matrix[i][j][0], matrix[i][j][1] + i-j))
else:
shifted_matrix[i].append((matrix[i][j][0], matrix[i][j][1]))
return shifted_matrix

然后,您可以从命令行或任何您使用它的地方通过说

diagonalize_matrix(matrix)

您也可以重新格式化它以接受另一个定义对角化类型的变量(如果它应该从左上角、右上角、左下角、右下角增加),但我不确定我完全理解什么你问的是什么?

关于python - 创建移位矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25921250/

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