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

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

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

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

Python

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

Q&A

解決済

1回答

6593閲覧

meshgrid関数の役割とは?

退会済みユーザー

退会済みユーザー

総合スコア0

NumPy

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

Python

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

0グッド

0クリップ

投稿2017/04/26 07:17

meshgrid関数の役割は何なのでしょうか?

# coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function import os import numpy as np al= np.logspace(0,10,11,base=0.5) x = np.linspace(1,3,3) X,Y = np.meshgrid(al,x) print(al) print(x) print(X) print(Y)

というコードを書き、実行すると

[ 1.00000000e+00 5.00000000e-01 2.50000000e-01 1.25000000e-01 6.25000000e-02 3.12500000e-02 1.56250000e-02 7.81250000e-03 3.90625000e-03 1.95312500e-03 9.76562500e-04] [ 1. 2. 3.] [[ 1.00000000e+00 5.00000000e-01 2.50000000e-01 1.25000000e-01 6.25000000e-02 3.12500000e-02 1.56250000e-02 7.81250000e-03 3.90625000e-03 1.95312500e-03 9.76562500e-04] [ 1.00000000e+00 5.00000000e-01 2.50000000e-01 1.25000000e-01 6.25000000e-02 3.12500000e-02 1.56250000e-02 7.81250000e-03 3.90625000e-03 1.95312500e-03 9.76562500e-04] [ 1.00000000e+00 5.00000000e-01 2.50000000e-01 1.25000000e-01 6.25000000e-02 3.12500000e-02 1.56250000e-02 7.81250000e-03 3.90625000e-03 1.95312500e-03 9.76562500e-04]] [[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] [ 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.] [ 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.]]

という結果が得られました。この時にmeshgridを使ったコードの役割がわからなく、

X,Y = np.meshgrid(al,x) print(X) print(Y)

の結果がなぜ、出力結果の下2つになるのかがわかりません。

print(X)では同じ配列が3回出力されていて、print(Y)では列の繰り返しが3回行われていて、なぜXとYで結果が違うのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

例えば

x = [1,2,3,4,5,6,7,8,9]

の配列をX軸

y = [10,20,30,40,50]

の配列をY軸として表を作る場合を考えます。

-123456789
10
20
30
40
50

その場合、上のような表の各要素のx値とy値から各要素に入る値を求めることになるのですが、

meshgrid() を使うと、予め上のような表(実際は行列)に各要素毎のx値とy値を埋めたものを生成してくれます。

下のサンプルの結果を見ると解りやすいと思います。

Python

1import numpy as np 2 3x = [1,2,3,4,5,6,7,8,9] 4y = [10,20,30,40,50] 5 6X,Y = np.meshgrid(x,y) 7print(X) 8# => [[1 2 3 4 5 6 7 8 9] 9# [1 2 3 4 5 6 7 8 9] 10# [1 2 3 4 5 6 7 8 9] 11# [1 2 3 4 5 6 7 8 9] 12# [1 2 3 4 5 6 7 8 9]] 13 14print(Y) 15# => [[10 10 10 10 10 10 10 10 10] 16# [20 20 20 20 20 20 20 20 20] 17# [30 30 30 30 30 30 30 30 30] 18# [40 40 40 40 40 40 40 40 40] 19# [50 50 50 50 50 50 50 50 50]]

上では説明を簡単にするため表として記述しましたが、実際にはグラフの座標値を求めるために使用することの方が多いと思います

このような座標行列を予め作成しておくことより、
例えば
f(x,y) = x+yの値を求める場合は

Python

1print(X+Y) 2# => [[11 12 13 14 15 16 17 18 19] 3# [21 22 23 24 25 26 27 28 29] 4# [31 32 33 34 35 36 37 38 39] 5# [41 42 43 44 45 46 47 48 49] 6# [51 52 53 54 55 56 57 58 59]]

f(x,y) = x+2yの場合は

Python

1print(X+2*Y) 2# => [[ 21 22 23 24 25 26 27 28 29] 3# [ 41 42 43 44 45 46 47 48 49] 4# [ 61 62 63 64 65 66 67 68 69] 5# [ 81 82 83 84 85 86 87 88 89] 6# [101 102 103 104 105 106 107 108 109]]

のようにシンプルに各座標値を求めることができます。

投稿2017/04/27 08:10

magichan

総合スコア15898

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問