python - 迭代一个大数组,用大小相同但不同的较小数组填充它
问题描述
我有一个充满零的大数组,简单地定义为:
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
推荐阅读
- r - R:提取一列中的唯一值与另一列中的值匹配
- android-studio - 将 Android Studio 更新到最新补丁时出现“在安装区域发现一些冲突”错误
- google-cloud-platform - 多处理的 GCP 计算引擎带宽瓶颈
- nginx - 具有不同 proxy_buffers 设置的多个代理,响应 404
- jvm - 使用containerd时物理内存的ehcache 0B
- python - 使用 Django ORM 比较一周(或一分钟)前的数据
- python - 如何在 Python 中识别两个字符串的公共子字符串?
- android - 无法在文件管理器 [Android 10、Android 11] [react-native-photo-editor] 的最近选项中找到图像
- python - AttributeError: 'NoneType' 对象在插入双向链表时没有属性 'prev'
- google-cloud-platform - GCP 存储 - 如何创建一个脚本,将所有文件/文件夹从一个存储桶复制到另一个存储桶,但文件夹结构不同