🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

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

Python

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

Q&A

解決済

1回答

1790閲覧

python csvに格納された座標(x、y)と点(x、y)の距離(2点間の距離)

huuuuuuu

総合スコア8

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

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

Python

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

0グッド

0クリップ

投稿2019/11/11 05:45

編集2019/11/11 06:38

2点間の距離(ユークリッド距離)について質問です。

A(x1=2,y1=2),B(x2=4,y2=6)である時の2点間の距離は以下のスクリプトでできるかと思います。

python

1import numpy as np 2import pandas as pd 3 4x1 = 2 5y1 = 2 6x2 = 4 7y2 = 6 8 9a = np.array([x1,y1]) 10b = np.array([x2,y2]) 11 12u = b - a 13np.linalg.norm(u) 14print(np.linalg.norm(u))

これとは別に、csvに格納されているそれぞれのⅹ,yと設定した点の2点間距離を求めるためにはどうしたらよいでしょうか。
x,y
4,3
7,8
5,9

設定した点(x1,y1)(2,2)
以下が試したスクリプトです。

python

1x1 = 2 2y1 = 2 3 4df = pd.read_csv("x_y.csv",usecols=[0,1]) 5 6df_x = df["x"] 7df_y = df["y"] 8 9a = np.array(df_x,df_y) 10b = np.array([x1,y1]) 11 12u = b - a 13np.linalg.norm(u) 14print(np.linalg.norm(u)) 15

エラーメッセージ

Message=operands could not be broadcast together with shapes (2,) (3,)
Source=C:\Users\bosailab\source\repos\point_distance\point_distance\point_distance.py
スタック トレース:
File "C:\Users\bosailab\source\repos\point_distance\point_distance\point_distance.py", line 18, in <module>
u = b - a

x_y.csvに格納されたすべての(x,y)と設定した点(2,2)の距離を算出したいです。

お手数をおかけいたしますが、よろしくお願いいたします。

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

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

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

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

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

hayataka2049

2019/11/11 05:49

x_y.csvの中身をそのまま教えて下さい(質問文にあるものはcsvフォーマットではないです)
hayataka2049

2019/11/11 05:53

あと、エラーメッセージはすべて掲載してください(スタックトレース含めてすべてです)
huuuuuuu

2019/11/11 06:39

hayataka2049さん>失礼いたしました。2点修正いたしました。よろしくお願いいたします。
guest

回答1

0

ベストアンサー

こんな感じでやってください。

python

1import numpy as np 2import pandas as pd 3 4x1 = 2 5y1 = 2 6 7df = pd.read_csv("x_y.csv",usecols=[0,1]) 8 9df_x = df["x"] 10df_y = df["y"] 11 12a = np.array([df_x,df_y]).T # 修正点1 13b = np.array([x1,y1]) 14 15u = a - b 16print(np.linalg.norm(u, axis=1)) # 修正点2 17

投稿2019/11/11 06:42

hayataka2049

総合スコア30935

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

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

huuuuuuu

2019/11/11 07:08

ありがとうございます。解決致しました。 もう一つご質問なのですが、 csvファイルに『distance』という列を追加したのですが、 ここに算出した値を出力する為にはどのようにしたらよろしいでしょうか。 to_csvを用いるということはわかるのですが、どのように記述したらよいかがわかりません。 基礎的な内容で申し訳ございませんが、よろしくお願いいたします。 x,y,distance 4,3, 7,8, 5,9,
hayataka2049

2019/11/11 07:26

dist = np.linalg.norm(u, axis=1) df["distance"] = dist df.to_csv("x_y_dist.csv", index=False) などでどうぞ。 (別ファイルに書き出すように書いていますが、to_csvの第一引数に読み込み時と同じ名前を指定すれば上書きされます)
huuuuuuu

2019/11/11 08:12

ありがとうございます。 ご教授いただいた内容で解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問