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

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

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

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

Q&A

解決済

3回答

1906閲覧

pythonでのSyntaxError

ruuruusann24

総合スコア16

Python 3.x

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

0グッド

0クリップ

投稿2017/11/24 05:47

ここでshow_volonoi_with_metricsのなかで
xs = map(lambda p: p[0], cluster_points)
SyntaxError: invalid syntax
というエラーが出てしまいます。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
%matplotlib inline

def label_cluster_num(means, mesh_points, metrics):
def label(point):
cluster_label = np.argmin(map(lambda mean: metrics(mean, point), means))
return point, cluster_label
return map(label, mesh_points)

c_means = np.array([[1, 2], [-3, 4], [-5, -6], [7, -8]])
xs = np.linspace(-10, 10, 100)
ys = np.linspace(-10, 10, 100)
xx, yy = np.meshgrid(xs, ys)
mesh_points = np.c_[xx.ravel(), yy.ravel()]

def show_volonoi_with_metrics(metrics):
labeled_mesh_points = label_cluster_num(c_means, mesh_points, metrics=metrics)
plt.figure()
fig, ax = plt.subplots()

ax.set_aspect('equal')
ax.grid(True, which='both')
ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
ax.set_xlim([-10, 10])
ax.set_ylim([-10, 10])

for i in range(0, len(c_means)):
cluster_points = map(lambda p, label: p, filter(lambda p, label: label == i, labeled_mesh_points)
xs = map(lambda p: p[0], cluster_points)
ys = map(lambda p: p[1], cluster_points)
ax.scatter(xs, ys, color=cm.prism(i / float(len(c_means))), marker='.')

ax.scatter(map(lambda p: p[0], c_means), map(lambda p: p[1], c_means), color="g", marker='o')

plt.show()

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

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

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

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

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

guest

回答3

0

コーディング/考えるのがいやだ。質問するときのヒントを参考にして質問を詳細に書くのも面倒だ。
実行結果を見たいだけ
であれば[Python][Scipy] 様々な距離でボロノイ図を作成してみたを見ればよいかと思います。

投稿2017/11/24 05:56

編集2017/11/24 06:00
can110

総合スコア38262

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

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

mkgrei

2017/11/24 05:59

この業界ではmap/filterを使うのが通例なのですね。 numpyのスライスのほうが実行時間も速い気がするのですが…
can110

2017/11/24 06:04

(numpyの)学習コストとコーディング、実行速度を天秤にかけての選択かもしれません。 pythonは道具が豊富でいろいろな書き方ができ便利な一方、初心者には理解しずらくなることも多い感じがします。
mkgrei

2017/11/24 06:08

確かに一応外部ライブラリに分類されますね。 ただ、書き方が直感的ではないので、すごく読みにくいのが難点ですね。 自分がインタープリタになった気分です。
can110

2017/11/24 06:21

あ、map/filterなどの高階関数でコード書いてると、知恵熱なのか脳内麻薬なのかが出てきてファーっと気分良くなることがあります。 でも麻薬が切れた翌日には自分で書いたコードなのに解読するのに時間がかかるという。
mkgrei

2017/11/24 06:46

ありますね。 冴えている時に限って面倒なコードを書くので、 いつもの冴えていない時に読み解けるわけがない事態に遭遇します。
guest

0

素直なスライスではなくmap関数祭りをしている理由というのがあるのでしょうか?

python

1xs = cluster_points[:, 0] 2ys = cluster_points[:, 1]

投稿2017/11/24 05:51

mkgrei

総合スコア8560

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

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

0

ベストアンサー

一行前の括弧閉じが足りないからです。
質問の仕方について、直前**(BAいただいてからこの質問まで3分)**の回答で指摘しました。

質問の仕方について

teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。

投稿2017/11/24 05:51

編集2017/11/24 05:56
LouiS0616

総合スコア35660

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

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

ruuruusann24

2017/11/24 05:56

すみません、見落としていました。丁寧に教えてくださりありがとうございます
LouiS0616

2017/11/24 05:57

一気に書いて実行すると、特に慣れないうちはエラーが頻発します。 段階的に書いて少しずつ機能を拡張した方が良いと思いますよ。
ruuruusann24

2017/11/24 05:58

ありがとうございます、今後ともよろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問