首页 > 解决方案 > 在 python 中使用 3D 数组填充 2D 数组

问题描述

作为初学者,我在 Python 中遇到了一些麻烦。让我举一些例子,让我们考虑以下数据:

data = [[1, 7],
        [2, 8],
        [3, 9],
        [4, 10],
        [5, 11],
        [6, 12],
        [13, 14],
        [15, 16]]

我想作为输出:

B       = [[1+3+5+13, 7+9+11+14],
          [2+4+6+15, 8+10+12+16]]

为此,我已经尝试将数据数组分割成更小的数组(2x2),但我找不到让它工作的方法。我认为如果我能找到一种方法让这个小程序工作,我将能够处理更大的数据文件。

这就是我的实际代码:

A= {}
m=2
A=[data[idx: idx + m] for idx in range(0, len(data), m)]
B=[]
for a in range(1,2) :
    for l in range(2):
        B.append([])
        for c in range(2):
            B[l].append(A[a][l][c])
            print('B = ' + str(B))
print('end')

感谢您的时间。

标签: pythonarraysnumpymultidimensional-array

解决方案


您想要的四个总和可以像这样有效地计算:

import numpy as np
arr = np.array(data)

w = arr[0::2,0] # array([ 1,  3,  5, 13])
x = arr[0::2,1] # array([ 7,  9, 11, 14])
y = arr[1::2,0] # array([ 2,  4,  6, 15])
z = arr[1::2,1] # array([ 8, 10, 12, 16])

B = [[w.sum(), x.sum()], [y.sum(), z.sum()]]

arr[1::2,0]意思是“从第 1 行开始,每隔一行取一次,然后取第 0 列。”


推荐阅读