如何在一个数组中按顺序分配两个数字?

2024-06-14 08:49:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着按照一定的程序在矩阵中对角分配两个数字。 首先,该行倒数第二行的第一个数字与最后一行的第二个数字,然后该行的第一个数字与倒数第二行的第二个数字对齐,以此类推。下面的示例显示了该序列。矩阵不一定总是具有相同的大小

范例

a=np.array([[11,12,13],
            [21,22,23],
            [31,32,33]])

所需输出:

21 32
11 22
11 33
22 33
12 23

a=np.array([[11,12,13,14],
            [21,22,23,24],
            [31,32,33,34],
            [41,42,43,44]])

所需输出:

31 42
21 32
21 43
32 43
11 22
11 33
11 44
22 33
22 44
12 23
12 34
23 34
13 24

有可能吗


Tags: 程序示例np序列矩阵数字array对角
1条回答
网友
1楼 · 发布于 2024-06-14 08:49:55

这是一个迭代解,假设一个平方矩阵。为非平方矩阵修改这个参数应该不难

import numpy as np

a=np.array([[11,12,13,14],
            [21,22,23,24],
            [31,32,33,34],
            [41,42,43,44]])

w,h = a.shape
for y0 in range(1,h):
    y = h-y0-1
    for x in range(h-y-1):
        print( a[y+x,x], a[y+x+1,x+1] )

for x in range(1,w-1):
    for y in range(w-x-1):
        print( a[y,x+y], a[y+1,x+y+1] )

相关问题 更多 >