gpt4 book ai didi

python - 在 for 循环中使用相应的 3D numpy 数组

转载 作者:行者123 更新时间:2023-12-04 09:31:57 25 4
gpt4 key购买 nike

我想知道使用相应 3D 数组的最佳方法是什么。所以我创建了 3 个不同的 numpy 数组,像这样(这只是一个例子,3D 数组可以更大),我想要做的是替换 arr 的每个数组中的一些“部分”通过 arr2 中的值和 arr3 .例如在我的代码中,我想替换 arr[0, 2:] (带有那些的行部分)由 arr2 中的值决定然后是 arr[2:, 1] 部分(带有那些的列部分)由 arr3 中的值决定我正在考虑使用 zip但我遇到了麻烦,我的代码是下一个

import numpy as np

arr = np.array([[[0., 1., 1., 1., 1.],
[0., 0., 0., 0., 0.],
[0., 1., 0., 1., 0.],
[0., 1., 1., 0., 1.],
[0., 1., 0., 1., 0.]],

[[0., 1., 1., 1., 1.],
[0., 0., 0., 0., 0.],
[0., 1., 0., 0., 1.],
[0., 1., 0., 0., 1.],
[0., 1., 1., 1., 0.]]])

arr2 = np.array([[[43, 25, 21],
[28, 43, 28]],

[[38, 29, 46],
[48, 27, 33]]])

arr3 = np.array([[[43, 43, 45],
[28, 24, 38]],

[[32, 26, 30],
[40, 23, 20]]])

for i, j in zip(arr, arr2):
for k in j:
i[0, 2:] = k

print(i)

#output
#[[ 0. 1. 48. 27. 33.]
# [ 0. 0. 0. 0. 0.]
# [ 0. 1. 0. 0. 1.] #The last array in arr with the last array in arr2
# [ 0. 1. 0. 0. 1.] #It does almost what I need, but not quite
# [ 0. 1. 1. 1. 0.]]

#If I try using append like

aux = []

for i, j in zip(arr, arr2):
for k in j:
aux.append(i[0, 2:] = k)

#I get an error
#keyword can't be an expression


问题不仅如此,而且,我有 3 个不同的数组,所以我不想在完成替换行部分后创建一个不必要的列表,然后使用此列表替换列部分,如果有更简单的方式,我想要的输出是下一个
 newarr =      [[[0.,  1., 43., 25., 21.],
[0., 0., 0., 0., 0.],
[0., 43., 0., 1., 0.],
[0., 43., 1., 0., 1.],
[0., 45., 0., 1., 0.]],

[[0., 1., 28., 43., 28.],
[0., 0., 0., 0., 0.],
[0., 28., 0., 1., 0.],
[0., 24., 1., 0., 1.],
[0., 38., 0., 1., 0.]],

[[0., 1., 38., 29., 46.],
[0., 0., 0., 0., 0.],
[0., 32., 0., 0., 1.],
[0., 26., 0., 0., 1.],
[0., 30., 1., 1., 0.]],

[[0., 1., 48., 27., 33.],
[0., 0., 0., 0., 0.],
[0., 40., 0., 0., 1.],
[0., 23., 0., 0., 1.],
[0., 20., 1., 1., 0.]]]


所以 arr中的第一个二维数组复制自身,然后替换 arr2 的第一个二维数组中的值和 arr3并对 arr 中的第二个二维数组执行相同操作和 arr2 中的第二个二维数组和 arr3 ,如果有任何方法可以为我指出正确的方向,我将不胜感激,谢谢!

最佳答案

一个更简单的方法是——

out = arr.repeat(2,axis=0)
out[:,0,2:] = arr2.reshape(-1,arr2.shape[2])
out[:,2:,1] = arr3.reshape(-1,arr3.shape[2])

关于python - 在 for 循环中使用相应的 3D numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62798696/

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