[英]Changing subarrays in 3D arrays using values of a 2D array using numpy
[英]Sum values in an array using 2D and 3D arrays
因為我對上一個問題不清楚,我正在重新編輯它:
讓我們假設一個數組
A = [[A[0][0], A[0][1], ..., A[0][10]],
[A[1][0], A[1][1], ..., A[1][10]],
[............................],
[A[1k][0], A[1k][1], ..., A[1k][10]],
[A[1k+1][0], A[1k+1][1], ..., A[1k+1][10]],
[A[1k+2][0], A[1k+2][1], ..., A[1k+2][10]],
[.....................................],
[A[2k][0], A[2k][1], ..., A[2k][10]],
[A[2k+1][0], A[2k+1][1], ..., A[2k+1][10]],
[.....................................],
[A[nk][0], A[nk][0], ..., A[nk][10]]]
作為輸出,我試圖得到:
B = [[A[0][0]+A[1k][0]+...+A[nk][0], A[0][1]+A[1k][1]+...+A[nk][1], ... , A[0][10]+A[1k][10]+...+A[nk][10]],
[A[1][0]+b[1k+1][0]+...+A[nk+1][0], A[1][1]+A[1k+1][1]+...+A[nk+1][1], ... , A[1:10]+A[1k+1][10]+...+A[nk+1][10]],
[.......................................................................................................],
[A[1k-1][0]+A[2k-1][0]+...+A[(n+1)k-1][1], A[1k-1][1]+A[2k-1][1]+...+A[(n+1)k-1][1], ... , A[1k-1][10]+A[2k-1][10]+...+A[(n+1)k-1][10]],
恢復,它是新數組中子數組的所有第一個元素的總和。
我已經用一個更小的例子嘗試過這個:
data = [[1, 7],
[2, 8],
[3, 9],
[4, 10],
[5, 11],
[6, 12],
[13, 14],
[15, 16]]
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]+A[a-1][l][c])
print('B = ' + str(B))
print('end')
我試圖獲得:
B = [[1+3+5+13, 7+9+11+14],
[2+4+6+15, 8+10+12+14]]
我的例子很簡單,因為它有一個眾所周知的行數。
但我找不到通用的解決方案。 另外,我真的不知道我有多少 n*1k 行,但是如果我能找到至少 2k 行的解決方案,我想我可以改進它。 謝謝你的時間。
您可以按如下方式創建所需的輸出。
代碼
def sum_data(data, rows_per_group):
mt = list(zip(*data)) # Matrix transpose to allow summing
# over column element
# (see https://www.geeksforgeeks.org/transpose-matrix-single-line-python/
# Use list comprehension to sum
return [[sum(p[offset::rows_per_group]) for p in mt] for offset in range(rows_per_group)]
示例用法:
data = [[1, 7],
[2, 8],
[3, 9],
[4, 10],
[5, 11],
[6, 12],
[13, 14],
[15, 16]]
print(sum_data(data, 2))
# Output:
[[22, 41], [27, 46]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.