繁体   English   中英

Numpy ND阵列

[英]Numpy N-D array

我有一个大小为[128,128,128,3]的numpy数组。 您可以看到这是1组16组8图像堆栈,大小为128x128x3。 我想将其重塑为大小[16,128,128,24]。 我的代码如下:

b_imgs_96_reshape = np.empty([16,128,128,24])
for i in range(0,128):
    b_imgs_96_reshape[i//8,:,:,(i%8)*3:(i%8)*3+3] = b_imgs_96[i,:,:,:]

但是我得到了错误,有时会随机崩溃。 这是错误消息:

TypeError:列表索引必须是整数或切片,而不是元组

谁能帮我解决这个问题? 非常感谢您的帮助。

如果输入b_imgs_96具有形状( b_imgs_96 )和标量dtype,则

1)您发布的代码段中没有可能触发您报告错误的列表

2)除非您在智能手表上执行此操作,否则此处的存储不应成为问题; 对于64位dtype确实为128x128x128x3x8〜50MB

您可以并且可能应该避免循环,而应该

 b_imgs_96_reshape = np.moveaxis(b_imgs_96.reshape(16, 8, 128, 128, 3), 1, 3).reshape(16, 128, 128, 24)

我无法重现您的错误。 运行良好:

b_imgs_96 = np.ones([128,128,128,3])

b_imgs_96_reshape = np.empty([16,128,128,24])
for i in range(0,128):
    b_imgs_96_reshape[i//8,:,:,(i%8)*3:(i%8)*3+3] = b_imgs_96[i,:,:,:]

如果是间歇性的,我可能会怀疑是内存问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM