image - np转置和挤压没有效果
问题描述
我通过加载(一个)图像
batches =datagen.flow_from_directory(...)
我想绘制一个示例图像以查看数据生成器的增强。
display(img_batch[0].shape)
给我看 (1, 256, 256, 3)
然后我转置
image = img_batch[i].transpose((2,1,3,0))
这里发生了第一个“错误”。通常我会转置为
image = img_batch[i].transpose((2,1,3))
但后来我得到一个错误
ValueError:轴与数组不匹配
所以我如图所示转置并得到
(256, 256, 3, 1)
所以我认为, np.squeez 可以解决这个问题,但是当我使用任何变体时
np.squeeze(image,(3,))
只是没有任何反应,显示前后的形状相同。
我不知道会发生什么。有人有想法吗?谢谢
解决方案
您需要将输出分配给np.squeeze(image,(3,))
变量,它不会对变量进行就地更改。
image = np.squeeze(image,(3,))
然后image.shape
将返回(256, 256, 3)
作为旁注,您可以在squeeze
不指定axis
您的情况下调用,因为该函数默认情况下会删除长度为 1 的维度。
编辑关于转置的使用:
在 numpy 中,该transpose
函数期望axis
是与您转置的数组的维数相同维度的元组。
在您的情况下image
是一个 4 维数组(当您在挤压它之前对其进行转置),因此,当您调用它transpose
时axis=(2, 1, 3)
会引发一个ValueError
. 使用 4 维元组参数调用它可以按预期工作。
如果在转置之前进行挤压,则可以将转置axis
称为 3 维元组。
推荐阅读
- node.js - 如何将 MQTT 代理连接到节点 js 应用程序
- ios - react-native-ios 上的原生模块不能为空
- java - 如果 Java 线程已经被该线程占用,为什么它必须重新进入锁定状态?
- html - 如何链接嵌套文件夹中的html页面?
- traefik - Traefik - 如何配置为 Windows 服务?
- python-3.x - 如何使用“for”循环来拆分值并创建字典列表?
- design-patterns - [GoF]-ConcreteSubject 可以覆盖通知方法吗?
- django - 如何使用 parse_qs 从视图重定向到另一个视图?
- php - 如何在 wordpress 中启动异步任务一次?
- react-native - 如何在不使用状态数组的情况下将 React Native 手机传感器数据保存到数组中(超出最大更新深度)?