我把一个一维数据转化为二维数据时出错,报错内容为:
Traceback (most recent call last):
File "G:\Data_dispose\Text_1.py", line 13, in <module>
a_1.resize(720, 360)
MemoryError: cannot allocate memory for array
代码为:(好多#号因为想先试处理第一个)
import numpy as np
fl1 = 'G:\\Data_dispose\\CC_CRU_tmp_AVE_1950-1978.txt'
# fl2 = 'G:\\Data_dispose\\CC_CRU_tmp_VAR_1950-1978.txt'
# fl3 = 'G:\\Data_dispose\\CC_CRU_tmp_AVE_1979-2019.txt'
# fl4 = 'G:\\Data_dispose\\CC_CRU_tmp_VAR_1979-2019.txt'
a = open(fl1, 'r')
# b = open(fl2, 'r')
# c = open(fl3, 'r')
# d = open(fl4, 'r')
a_1 = np.array(a.readline())
a_1.resize(720, 360)
print(a_1)
所调用的数据是一个由259200个float类型组成的一维数据(链接:https://pan.baidu.com/s/192ItUea6u6EIMfNhi-uYfQ 提取码:4jgc ),求问大佬们如何解决?
open一个文本文件,readline()函数只是读出了第一行,返回的是一个字符串,第12行并不能得到一个浮点型的数组对象。题主没有提供文本文件的格式,只能靠猜测。如果文件是分行的,应该使用readlines()读出全部行,遍历每一行并切片;如果文件不分行,则使用read()函数读出全部内容后切片。对每一个切片转为浮点数,生成一个列表后再转为数组。
可以用reshap https://www.geeksforgeeks.org/convert-a-1d-array-to-a-2d-numpy-array/
numpy在定义数组时用低精度