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

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

新規登録して質問してみよう
ただいま回答率
85.49%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

Q&A

解決済

2回答

2407閲覧

TypeError: __array__() takes 1 positional argument but 2 were given

daiki8412

総合スコア1

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

0グッド

1クリップ

投稿2021/07/10 03:23

前提・実現したいこと

python1年生の中で出てくる画像ファイルから数字を予測する機能を作っています。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "/Users/kawahatadaiki/Documents/predictDigits.py", line 30, in <module> data = imageToData("2.png") File "/Users/kawahatadaiki/Documents/predictDigits.py", line 12, in imageToData numImage = numpy.asarray(grayImage, dtype = float) TypeError: __array__() takes 1 positional argument but 2 were given

該当のソースコード

python

1import sklearn.datasets 2import sklearn.svm 3import PIL.Image 4import numpy 5 6#画像ファイルを数値リストに変換する 7def imageToData(filename): 8 # 画像を8X8のグレースケールに変換 9 grayImage = PIL.Image.open(filename).convert("L") 10 grayImage = grayImage.resize((8,8),PIL.Image.ANTIALIAS) 11 #数値リストに変換 12 numImage = numpy.asarray(grayImage, dtype = float) 13 numImage = numpy.floor(16 - 16 * (numImage / 256)) 14 numImage = numImage.flatten() 15 16 return numImage 17 18#数字を予測する 19def predictDigits(data): 20 #学習用データを読み込む 21 digits = sklearn,datasets,load_digits() 22 #機械学習する 23 clf = sklearn.svm.SVC(gamma = 0.001) 24 clf.fit(digits.data, sigits.target) 25 #予測結果を表示する 26 n = clf.predict([data]) 27 print("予測=",n) 28 29#画像ファイルを数値ファイルに変換する 30data = imageToData("2.png") 31#数字を予測する 32predictDigits(data) 33

補足情報(FW/ツールのバージョンなど)

macOS Big Sur(バージョン11.4)
python 3.8.5

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

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

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

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

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

can110

2021/07/10 03:53

PIL(pillow)のバージョンを記載ください。 import PIL print(PIL.__version__) というコードを実行すると確認できます。
guest

回答2

0

ベストアンサー

当方環境ではエラー再現しませんでした。
PIL(pillow)8.3.0の不具合だと思われます。
Fixed regression converting to NumPy arrays

8.3.1では解消されていますのでパッケージをアップデートしてください。

投稿2021/07/10 03:57

can110

総合スコア38256

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

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

Rwight

2021/07/10 11:57

確かに自分もそうでしたがpillowの古いバージョンを削除したらそのエラーは消えましたね。
daiki8412

2021/07/12 22:17

アップデートしたら問題のエラーは消えました! 問題なく動作するようになりました! ありがとうございます!
guest

0

最初

自分も以前同じ目にあいました。
なのでこれで助かると思います。
自分の場合(ファイルの場所)は
「(個人のハードディスクの名前が入っている為非表示)(この後ろにもファイル名があります)../Python/Python1年生/Chapter5/機械学習に挑戦しよう/predictDigits.py」までフルパスです。
もしもこの以下のエラーメッセージが表示された場合はこのように行ってください。

エラーメッセージ

Error

1Traceback (most recent call last): 2 File "(省略)/Python1年生/Chapter 5/機械学習に挑戦しよう/predictDigits.py", line 30, in <module> 3 data = imageToData('2.png') 4 File "(省略)/Python1年生/Chapter 5/機械学習に挑戦しよう/predictDigits.py", line 9, in imageToData 5 numImage = numpy.asarray(grayImage, dtype = float) 6File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/Image.py", line 2912, in open 7 fp = builtins.open(filename, "rb") 8FileNotFoundError: [Errno 2] No such file or directory: '2.png'

「ターミナルでは」 Windowsでもほぼ同じです。

1 全てのパスをリセットさせます。

terminal

1MacBook Python % cd (↩️) (MacOSの場合)

terminal

1PS C:\Users(ユーザー)(ファイル名)>Python> cd / (↩️) (Windowsの場合)

2 全て無効にさせてからフルパスを入力します。

terminal

1MacBook ~ % cd (最初のパス(ハードディスク名)から)/(ファイル名)/Python/Python1年生/Chapter5/機械学習に挑戦しよう(↩️)

3 プログラムを実行(▶️)を押せばこう出てきます。

terminal

1MacBook 最初のパス(ハードディスク名)から)/(ファイル名)/Python/Python1年生/Chapter5/機械学習に挑戦しよう % 最初のパス(ハードディスク名)から)/(ファイル名)/Python/Python1年生/Chapter5/機械学習に挑戦しよう/predictDigits.py" 2 3予測= [0]

最後

こんな感じでターミナルを打てば成功するはずです。
不備な点がございましたらご連絡を頂けると出来る限り返信を致します。
自分の質問とほぼ同じだと思いますのでこの奴を修正をすれば解決するはずです。
質問者さん 諦めずに頑張りましょう!。

本書名など

教材名:「Python1年生」 
カテゴリー:「Chapter5」
ページ:「P.170・171」
ファイル名:「predictDigits.py」

動画視聴

フルパスのやり方の動画は音声はありませんが字幕でやっております。
撮り方は下手ではありますがこれで「なるほどね〜」って理解していただけると非常に嬉しいです。
皆さん頑張ってください!。

投稿2021/07/10 11:50

編集2021/07/10 12:01
Rwight

総合スコア63

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

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

daiki8412

2021/07/12 22:13

やってみたのですが、ターミナルで実行できませんでした!
daiki8412

2021/07/12 22:18

フルパスの入力まではできたのですがエラーが消えません( ; ; )
Rwight

2021/07/17 10:25

返信が遅れてしまい申し訳ありません。 了解いたしました。 これからも頑張ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問