python - 在 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')
感谢您的时间。
解决方案
您想要的四个总和可以像这样有效地计算:
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 列。”
推荐阅读
- html - 如何用 div 创建树
- pyspark - 获取最小值关联国家
- android - 如何将车载摄像头连接到移动应用程序
- bash - 无法让 cp 命令通过 CGI 脚本工作
- android - 如何在 Android 中使用视图绑定
- angular - 如何修复 AccessDenied 错误 CloudFront Angular 部署的应用程序?
- reactjs - React Hooks Auth0-js 上下文挂钩未更新
- c# - 通过数据绑定 WPF/MVVM 从从数据库填充的组合框中获取所选值,以进行比较
- rest - 用于返回布尔值的 REST API 设计
- javascript - 带有通配符的 URL var