閲覧ありがとうございます。Google ColaboratoryでGoogle driveに保存したnpyをloadしようとしたところValueErrorが出てしまいよく理解できなかったため質問いたしました。npyの次元は(2768,512,1024)です。実現したいことは、機械学習のために作成したデータセットを読み込むことです。以下、ソースコードとエラー文になります。宜しくお願い致します。
python
1!pip install sunpy 2 3from keras.layers import Input, Dense 4from keras.models import Model 5from keras.preprocessing.image import load_img, save_img, img_to_array, array_to_img 6import os 7import glob 8from PIL import Image 9import numpy as np 10from sklearn.model_selection import train_test_split 11import matplotlib.pyplot as plt 12from google.colab import drive 13import sunpy.map 14 15drive.mount('/content/drive', force_remount=True) 16 17input_data = np.load('drive/My Drive/study/temp_201005_All.npy') ###エラー箇所 18print(input_data.shape) 19t = np.zeros(input_data[0],dtype='int32') 20print(t.shape)
ValueError Traceback (most recent call last) <ipython-input-6-29c01da90b5c> in <module>() ----> 1 input_data = np.load('drive/My Drive/study/temp_201005_All.npy') 2 print(input_data.shape) 3 t = np.zeros(input_data[0],dtype='int32') 4 print(t.shape) 1 frames /usr/local/lib/python3.7/dist-packages/numpy/lib/npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding) 438 else: 439 return format.read_array(fid, allow_pickle=allow_pickle, --> 440 pickle_kwargs=pickle_kwargs) 441 else: 442 # Try a pickle /usr/local/lib/python3.7/dist-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs) 769 array = array.transpose() 770 else: --> 771 array.shape = shape 772 773 return array ValueError: cannot reshape array of size 743050334 into shape (2768,512,1024)
以下追記したソースコードですが、ここでは読み込んだ画像をndarrayに変換した後、512*1024のサイズになるようpadding(画像によって元々のサイズが違うため)した後、追加した軸に沿って画像2,768枚をstackしています。
python
1import glob 2import sunpy.map 3import numpy as np 4import matplotlib.pyplot as plt 5import cv2 6import math 7from google.colab import drive 8drive.mount('/content/drive', force_remount=True) 9 10f_list = sorted(glob.glob('drive/My Drive/study/201005/*.magnetogram.fits')) 11x_pad = 512 12y_pad = 1024 13 14input_data = np.array(sunpy.map.Map(f_list[0]).data) 15pad_top = int((y_pad / 2) - math.floor(input_data.shape[1] / 2)) 16pad_bottom = int((y_pad / 2) - math.ceil(input_data.shape[1] / 2)) 17pad_left = int((x_pad / 2) - math.floor(input_data.shape[0] / 2)) 18pad_right = int((x_pad / 2) - math.ceil(input_data.shape[0] / 2)) 19 20input_data = np.pad(input_data, [(pad_left, pad_right), (pad_top, pad_bottom)], 'constant') 21input_data = input_data[np.newaxis, :, :] 22print(input_data.shape) 23for i in range(len(f_list)-1): 24 tmp = np.array((sunpy.map.Map(f_list[i+1])).data) 25 pad_top = int((y_pad / 2) - math.floor(tmp.shape[1] / 2)) 26 pad_bottom = int((y_pad / 2) - math.ceil(tmp.shape[1] / 2)) 27 pad_left = int((x_pad / 2) - math.floor(tmp.shape[0] / 2)) 28 pad_right = int((x_pad / 2) - math.ceil(tmp.shape[0] / 2)) 29 tmp = np.pad(tmp, [(pad_left, pad_right), (pad_top, pad_bottom)], 'constant') 30 input_data = np.vstack([input_data, tmp[np.newaxis, :, :]]) 31 print(input_data.shape) 32np.save('drive/My Drive/study/temp_201005_All', input_data)
回答1件
あなたの回答
tips
プレビュー