python - np.load() 在 for 循环中
问题描述
我有一组保存为 .npy 文件的数组,在这里我试图将它们全部读取,然后将它们添加到列表中以进行连接。问题是,当我尝试在 for 循环中执行此操作时,我得到“无法将大小为 0 的数组重塑为形状 (585,1386)”,但是当我一一加载它们时,它们读取得很好……什么给了?
'''
import numpy as np
import os
arr_list = []
for file in os.listdir('/Users/sjakober/Documents/ResearchSpring2020/geotiffs/'):
if file.endswith(".npy"):
arr = np.load(file)
arr_list.append(arr)
'''
解决方案
当 .npy 文件损坏时会发生此错误,可能会被截断。文件头中定义的形状与文件中的实际数据量不匹配。这在这个问题的评论中有所说明。
在这个特定场景中的问题是,它os.listdir
返回一个数组,其中包含给定路径内的所有文件名,而不是每个文件的完整路径。因此,当尝试从file
变量加载数组时,它可能会尝试在当前文件夹中加载损坏的现有文件,但没有预期的文件。如果文件不存在,numpy 会抛出FileNotFoundError
.
这可以通过使用os.path.join
并加入文件名和完整路径来解决,或者使用glob
:
import glob
...
for file in glob.glob("/Users/sjakober/Documents/ResearchSpring2020/geotiffs/*.npy"):
...
推荐阅读
- python - Python:将字典值中的短语匹配到一个句子(字典键)并根据匹配输出
- jquery - Jquery Autocomplete Load Data at once ($.ajax vs $.get/$.post)
- c - 如何在 pcap_loop 的回调函数中注入数据包?
- java - 升级 Spring 版本时出现异常
- angular - Angular HttpClient get() 方法被当前查询参数阻塞
- python - python - 有没有办法让不和谐的机器人听另一个不和谐的机器人?
- database - 选择多个图像并存储它们的路径。MSAccess-VBA
- java - 我想在 href 标记下找到文本并在 assert 语句中使用它
- vba - 无法从 Excel VBA 触发 Power Automate 请求触发器
- r - 无法将列传递给自定义函数,因为它们未知或找不到对象