質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2209閲覧

np.load(npy)のValueError(cannot reshape array of size 743050334 into shape (2768,512,1024))

tkrd

総合スコア5

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/07 09:25

編集2021/08/07 17:41

閲覧ありがとうございます。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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikapy

2021/08/07 10:57

linuxのfactorコマンドで素因数分解したら 743050334: 2 13 101 282959 と出ました。なにかヒントになりませんか。
holy_

2021/08/07 11:34

おそらくnumpyファイルが破損かもなのでもう一度正しいファイルか確認した方が良いかと どのようにファイルを作成したのとかファイルの情報も質問に必要かと思いました。
tkrd

2021/08/07 17:43

お二人ともありがとうございます。 素因数分解していただいた件ですが、すみませんが分かりませんでした。 ファイルの破損の可能性について、もう一度作成しなおしてみたいと思います。 また、npyのバイナリファイルを作成したコードを載せましたので、何かヒントになれば教えていただきたく思います。
holy_

2021/08/07 18:59

一度画像の枚数を10枚とか数を減らしてみるのはどうでしょうか? データのサイズに限界があるのかも
tkrd

2021/08/07 19:17

ありがとうございます。10枚でやったところ問題なくできました。サイズの問題なのかもしれませんね、もう少し検証してみたいと思います。
guest

回答1

0

自己解決

ファイルの破損が原因でした。

投稿2021/08/08 03:49

tkrd

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問