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

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

新規登録して質問してみよう
ただいま回答率
85.46%
NumPy

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1980閲覧

np.loadで失敗する.

nifch

総合スコア28

NumPy

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/10/11 07:04

やりたいこと

pythonでnpyファイルをnp.loadしたい.

環境

  • MacOS

  • QGIS Ipython
  • バニラpython環境
  • Google Colab

ファイルの内容

数値が格納された[21600*43200]のnpyファイル.
同サイズのnarrayをnp.stackで重ね,np.meanを使って生成したもの.

困っていること

以下のようなエラーがでる.

python

1 2d=np.load(file) 3Traceback (most recent call last): 4 File "/Applications/QGIS3.14.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.7/code.py", line 90, in runcode 5 exec(code, self.locals) 6 File "<input>", line 1, in <module> 7 File "/Applications/QGIS3.14.app/Contents/MacOS/../Resources/python/numpy/lib/npyio.py", line 447, in load 8 pickle_kwargs=pickle_kwargs) 9 File "/Applications/QGIS3.14.app/Contents/MacOS/../Resources/python/numpy/lib/format.py", line 738, in read_array 10 array.shape = shape 11ValueError: cannot reshape array of size 536862720 into shape (21600,43200)

cannot reshape arrayについて調べたのですが,reshapeを実行する際に起きるエラーへの対処法は見つけられましたがnp.loadする際になぜ発生するのかがわかりません.

試したこと

  • npファイルが破損しているのかと思い,再度npファイルを生成しsaveしなおした.

→変化なし.保存前のnpファイルは正常そうです.

  • QGIS内のIpythonで実行していたため,別の環境でも試した. 

→同様のエラーがおきた.

  • 同じ作成法で生成した同サイズのnpyではエラーは発生していない.

考えている原因・知りたいこと

  • 大きなファイルなのでメモリ不足?
  • 含まれる値に問題がある?

なぜこのようなことが発生するのかご教示いただきたいです.

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

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

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

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

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

meg_

2020/10/11 07:20

> npファイルが破損しているのかと思い,再度npファイルを生成しsaveしなおした. 「npファイルを生成」するコードも提示いただくと回答が付きやすくなるかと思います。 numpyのバージョンは何ですか?
退会済みユーザー

退会済みユーザー

2020/10/11 07:27

以下のコードは走らせられますか? import numpy as np arr = np.zeros((21600,43200),np.uint8) np.save("arr.npy",arr) arr_loaded = np.load("arr.npy") print(arr_loaded.shape) うまく行った→「同サイズのnarrayをnp.stackで重ね,np.meanを使って生成したもの」の生成がうまく行っていない可能性。print(生成したもの.shape)で確認した方がいいかも? ※floatだと膨大なメモリがいるのでuint8で試しました。 うまく行かなかった→PythonとNumpyの何かがおかしい?
yasutakatou

2020/10/11 07:44

size 536862720 into shape (21600,43200) なのでメッセージ上はデータとreshapeのサイズがあっていないことになります https://deepage.net/features/numpy-reshape.html >-1を使用すると、元の要素数に合わせて自動で適切な値が設定されます。 なので-1で一旦pythonが認識しているshapeに変換してみて、 どういうnpにるか確認してから、データを眺めなおしてみてはどうでしょうか。
nifch

2020/10/15 08:03

numpyのバージョンは ```ここに言語を入力 >>> print(np.__version__) 1.17.2 ``` です. >以下のコードは走らせられますか? 問題なく動きました. >どういうnpにるか確認してから、データを眺めなおしてみてはどうでしょうか。 ありがとうございます.reshapeを使ってデータを眺めても問題ありませんでした. メモリ量が十分にあるWSで試したところ問題なく動いたのでやはりメモリ不足によるエラーなのかなぁ...と考えています. イマイチ腑に落ちないのですが自己解決とさせてください. たくさんお知恵をお貸しくださりありがとうございました.
yasutakatou

2020/10/15 08:05

メモリ不足だと違うエラーになる気がするんですよね。。とはいえデータをみんなで確認するわけにもいかないのでここまで、、というところですか。僕もモヤりますが悩んでも解決しないのでここで打ち止めですね。承知しました!お役に立てずすみません。
guest

回答1

0

自己解決

メモリが十分にあるWSで再試行したところ問題なくnp.save np.loadができましたのでひとまず自己解決とさせてください.

np.saveする前のnparrayには特に異常がなかったものの,loadでエラーが出たことから
np.saveの際にメモリが足りずにエラーが出たのかなと納得することにします.

皆様ありがとうございました.

投稿2020/10/15 08:05

nifch

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問