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

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

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

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

Python

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

Q&A

解決済

2回答

7006閲覧

Pythonによる3Dグラフの描写ができない

oldbrg425

総合スコア15

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2018/09/22 10:56

前提・実現したいこと

ラプラスの方程式の境界値問題について、反復法に基づく解法プログラムを作成し、3Dグラフを描写したいのですが、以下のエラーが発生してグラフが表示できません。
プログラムはオーム社「Pythonによる数値計算とシミュレーション」に掲載されたものをそのまま利用しています。

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

Traceback (most recent call last): File "glaplace.py", line 42, in <module> ax.plot_wireframe(X, Y, u) File "/anaconda3/lib/python3.7/site-packages/mpl_toolkits/mplot3d/axes3d.py", line 1848, in plot_wireframe if Z.ndim != 2: AttributeError: 'list' object has no attribute 'ndim'

該当のソースコード

python

1# -*- coding: utf-8 -*- 2 3import numpy as np 4import matplotlib.pyplot as plt 5from mpl_toolkits.mplot3d import Axes3D 6from matplotlib import cm 7import math 8 9LIMIT = 1000 #反復回数の上限 10N = 101 #x軸方向の分割数 11M = 101 #y軸方向の分割数 12 13#下請け関数の定義 14#iteration()関数 15def iteration(u) : 16 17 u_next = [[0 for i in range(N)] for j in range(M)] 18 19 for i in range(1, N-1) : 20 for j in range(1, M-1) : 21 u_next[i][j] = (u[i][j-1] + u[i-1][j] + u[i+1][j] + u[i][j+1]) / 4 22 23 for i in range(1, N-1) : 24 for j in range(1, M-1) : 25 u[i][j] = u_next[i][j] 26#iteration()関数の終わり 27 28#メイン実行部 29u = [[0 for i in range(N)] for j in range(M)] 30for i in range(M) : 31 u[0][i] = math.sin(2 * math.pi * i /(M-1)) 32 33for i in range(LIMIT) : 34 iteration(u) 35 36#グラフ描画 37x = np.arange(0, N) 38y = np.arange(0, M) 39X, Y = np.meshgrid(x, y) 40fig = plt.figure() 41ax = Axes3D(fig) 42ax.plot_wireframe(X, Y, u) 43plt.show() 44

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

Python3.7

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

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

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

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

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

guest

回答2

0

ベストアンサー

uはnumpy配列でないとだめなのでは?

安直に変換し、とりあえず実行できることを確認しました。

python

1# ax.plot_wireframe(X, Y, u) # 変更前 2ax.plot_wireframe(X, Y, np.array(u)) # 変更後

投稿2018/09/22 13:03

hayataka2049

総合スコア30933

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

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

oldbrg425

2018/09/22 14:30

ax.plot_wireframe()について調べたところ、ご指摘の通り引数はnumpy配列でないといけないようでした。 ありがとうございました。
guest

0

エラーで検索したらtopでヒットしました。

np.array 具体的な組み込み方は分かりませんが、これを使ってねってことかと。

イメージ説明

model.fit expects x and y to be numpy array. Seems like you pass a list, it tried to get shape of input by reading ndim attribute of numpy array and failed.

You can simply transform it using np.array:

import numpy as np ... model.fit(np.array(train_X),np.array(train_Y), epochs=20, batch_size=10)

投稿2018/09/22 13:13

編集2018/09/22 13:16
opyon

総合スコア1009

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問