gpt4 book ai didi

python - python - 增加3d numpy数组中元素子集的元素

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:56 25 4
gpt4 key购买 nike

我有一个由以下组成的 3d 列表

myArray = np.array([[[0]*n for i in range(m)] for j in range(o)])

我有一个循环运行所有元素,并递增当前元素中存储的值以及当前元素附近的多个元素:

myArray[xa:xb][ya:yb][za:zb] += 1.

哪里xa , xb等是根据循环中考虑的当前元素生成的,不一定相同。换句话说,我想增加 3D 列表中给定子三角形的值。

但是,当我尝试解决 myArray[xa:xb][0][0] 时,我得到一个长度大于 len(myArray[0]) 的列表。更不用说myArray[xa:xb][ya:yb][za:zb] += 1导致更多元素增加 1超出预期。

我可以通过使用三个嵌套的 for 循环来实现这一点:

for i in range(xa,xb+1):
for j in range(ya,yb+1):
for k in range(za,zb+1):
myArray[i][j][k] += 1

但这会大大减慢代码速度。我怎样才能在不损失性能的情况下实现这一目标?

最佳答案

你从一开始就走在正确的道路上。以下似乎有效:

myArray=np.zeros((o,m,n))
myArray[xa:xb+1,ya:yb+1,za:zb+1]+=1

请注意,数组中的索引切片使用与 for 循环中的 range 相同的边界,因此您必须 +1 结束索引。上面的过程在很短的时间内复制了三重 for 循环结果。

关于python - python - 增加3d numpy数组中元素子集的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619513/

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