python - 当我通过数组变量的列表名称引用它时,为什么Python中列表中的数组形状不同?
问题描述
train_images 是一个列表 [] 填充有图像 ('im')。我遍历列表(train_images)并更改此列表中每个“im”的形状。但是为什么这两种形状不同呢?'im' 与 train_images[x] 相同,不是吗?
for im in train_images:
im = transform.resize(im,(50,45),mode='constant',anti_aliasing=True)
im = image.img_to_array(im)
im = im/255
im = im.flatten()
print(train_images[0].shape) #(200, 180, 3)
print(im.shape) #(6750,)
解决方案
'im' 与 train_images[x] 相同,不是吗?
如果您没有im
在循环内重新分配,那么im
最终将成为最后一个值in train_images
(即train_images[-1]
)。这已经是与 不同的数组train_images[0]
,但是是的,它将具有相同shape
的数组(因为它们是相同 Numpy 数组的切片)。
但是,在您的循环体中,您有对im
. for
循环构造在每个循环的开头设置 的值,im
但它也在循环内部被替换......所以循环im
之后的值是分配的最后一个值,即flatten
操作的结果。
(如果你对为什么调用.flatten
会改变shape
数据感到困惑......我不知道该告诉你什么。你为什么认为它被称为“扁平化”?)
推荐阅读
- python-3.x - keras model.fit_generator 错误。我该如何解决这个问题?
- java - File file = new File() 和 File file = new File.Paths.get().toFile() 有什么区别?
- hadoop - 如何在 HIVE 的分区中重命名文件
- discord.js - 通过 ID 获取频道
- javascript - 如何让 newDate 字符串在 JS for HTML 中返回超过工作日的前三个字符?
- google-apps-script - 如何通过 setNumberFormat() 在数字后放置字符
- audio - Sony Spresense“audio_manager”断言失败
- java - 如何在 Eclipse 中按方法的完全限定名称搜索
- php - 如何修复php中的非法字符串偏移
- python - 有没有办法在硒中录制平行测试的视频?