У меня есть большой массив, полный нулей, просто определяемый как:
BigArray = np.zeros((100,1000,1000),np.float16)
Затем у меня есть трехмерный том, который я произвольно поворачиваю за пределами 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 элифных отчетов (я просто не чувствую, что это аккуратный код!).