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

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

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

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

Q&A

解決済

3回答

1570閲覧

どこが間違ってますか

pekeuto

総合スコア19

Python

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

0グッド

0クリップ

投稿2019/02/07 04:49

編集2019/02/07 05:02

前提・実現したいこと

numpyを実装中に以下のエラーメッセージが発生しました。

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

Traceback (most recent call last): File "test1.py", line 1, in <module> import numpy as np File "C:\Users\Desktop\test\numpy.py", line 35, in <module> image1 = make_image(3, 3) File "C:\Users\Desktop\test\numpy.py", line 10, in make_image image=np.random.randint(0,6,(m,n)) TypeError: randint() takes 3 positional arguments but 4 were given

該当のソースコード

python

1import numpy as np 2import random 3# 乱数の初期化 4np.random.seed(0) 5 6# 縦の大きさ、横の大きさを渡されたときに乱数で指定の大きさの画像を生成する関数 7def make_image(m, n): 8 9 # n×m行列の各成分を0~5の値でランダムに満たしてください 10 image=np.random.randint(0,6,(m,n)) 11 12 return image 13 14 15# 渡された行列の一部を変更する関数 16def change_matrix(matrix): 17 # 与えられた行列の形を取得し、shapeに代入してください 18 shape=matrix.shape 19 # 行列の各成分について、変更するかしないかをランダムに決めた上で 20 # 変更する場合は0~5のいずれかの整数にランダムに入れ替えてください 21 22 for m in range(0,shape[0]): 23 for n in range (0,shape[1]): 24 a=random.randint(0,2) 25 26 if a!=0: 27 matrix[m][n]=random.randint(0,5) 28 else : 29 matrix[m][n] 30 31 32 return matrix 33 34# ランダムに画像を作成 35image1 = make_image(3, 3) 36print(image1) 37 38# ランダムに変更を適用する 39image2 = change_matrix(np.copy(image1)) 40print(image2) 41 42# image1とimage2の差分を計算し、image3に代入してください 43image3=image1-image2 44print(image3) 45 46# image3の各成分が絶対値である行列をもとめimage3に再代入してください 47image3=np.abs(image3) 48 49# image3を出力 50print(image3) 51

試したこと

pip listでnumpyが入っていることは確認しました

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

dice142

2019/02/07 04:56

質問が書かれてないです。 「エラーが発生した」のはわかりましたが、聞きたいことが不明です。 エラーの意味ですか?場所ですか?
pekeuto

2019/02/07 05:00

エラーの場所を教えてください
dice142

2019/02/07 05:01

あ、質問の要件に関することはここではなく質問文に追記してください。
guest

回答3

0

ベストアンサー

間違っているのはファイル名です。numpy.pyではそのファイルがnumpyという名前のモジュールになります。

python

1import numpy as np

がそのファイル自身を指していて、そのファイル自身を(メインモジュールとは別に)インポートしてnpという名前で束縛します。

python

1import random

で標準ライブラリのrandomをrandomという名前で束縛します。

したがって

python

1np.random.randint(0,6,(m,n))

は、NumPyのrandomのrandintではなくて、そのファイル自身がrandomという名前で束縛している標準ライブラリのrandomのrandintを呼び出そうとします。

だから引数の数が合わなくなるのです。

投稿2019/02/07 05:10

quickquip

総合スコア11038

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

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

pekeuto

2019/02/07 05:16 編集

そういうことだったんですね わかりやすい説明ありがとうございました 解決しました
quickquip

2019/02/07 05:21 編集

これはすぐにはわからなくても仕方がないと思いますが、numpyのrandintのドキュメントを確認するのが最低限で、"読んだ上で間違っているように見えません"ぐらいの思いは書いてもらえるといいかなと感じました。
pekeuto

2019/02/07 05:31

気を付けます
guest

0

google翻訳
TypeError:randint()は3つの位置引数を取りますが、4つが指定されました

投稿2019/02/07 04:54

y_waiwai

総合スコア87747

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

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

0

File "C:\Users\Desktop\test\numpy.py", line 10, in make_image
image=np.random.randint(0,6,(m,n))
TypeError: randint() takes 3 positional arguments but 4 were given


image=np.random.randint(0,6,(m,n))

エラーの場所を教えてほしいとのことだったので。
書いてある通りですが

投稿2019/02/07 05:05

azuapricot

総合スコア2341

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問