gpt4 book ai didi

python - 迭代一个大数组,用大小相同但不同的较小数组填充它

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:01 24 4
gpt4 key购买 nike

我有一个充满零的大数组,简单地定义为:

BigArray = np.zeros((100,1000,1000),np.float16)

然后我有一个 3D 体积,我在 python 之外随机旋转它,每次旋转它时,我想将文件导入到 python 中并将其添加到数组的下一位。我目前有以下代码可以做到这一点:

n = 0

while n < 99:
Zaxisangle = randint(0,360)
Yaxisangle = randint(0,360)
Xaxisangle = randint(0,360)

os.system('rotatevol -angles {},{},{} -input {} -output {}'.format(Zaxisangle, Yaxisangle, Xaxisangle,
MRCfilewithextension, MRCforoutput))
particledata = mrcopen(MRCforoutput)



if n < 10:
ArtTomo[:, 0:100, (100*(n+1))-100:100*(n+1)] = particledata
n = n+1
else:
n = n+1

出于本示例的目的,我们可以将其简化为以下内容:

BigArray = np.zeros((100,1000,1000),np.float16)
particledata = np.random.rand(100,100,100)
n = 0
while n < 99:
if n < 10:
ArtTomo[:, 0:100, (100*(n+1))-100:100*(n+1)] = particledata
n = n+1
elif: 10 < n < 20
ArtTomo[:, 100:200, (100*(n+1))-100:100*(n+1)] = particledata
n = n+1
else:
n = n+1

然后我会为每个“行”编写大量 elif 语句。因为我正在使用不同的文件迭代数组,所以我不能简单地用“in range(0,1000,100)”语句填充它,这很烦人。

虽然我可以写出所有 elif 语句,但我觉得必须有一种更有效的方法来编写这段代码,但我只是不够好,看不到它。其他人可以用更好的方式写这个吗?或者我只需要写 10 个 elif 语句(我只是觉得它不是整洁的代码!)。

最佳答案

如果我理解正确的话,我认为你所写的内容可以这样表达:

BigArray = np.zeros((100,1000,1000),np.float16)
particledata = np.random.rand(100,100,100)
n = 0
while n < 99:
start = 100 * (n // 10)
ArtTomo[:, start:start+100, (100*(n+1))-100:100*(n+1)] = particledata
n = n+1

关于python - 迭代一个大数组,用大小相同但不同的较小数组填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54256387/

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