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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Q&A

解決済

1回答

439閲覧

Channel Routingをpythonで実装したい

iface

総合スコア42

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

0グッド

0クリップ

投稿2022/01/12 08:44

編集2022/01/12 08:47

前提・実現したいこと

channel routing_figure1

質問失礼します。
上のリンクのfigure1の画像のように、回路設計のChannel Routingをpythonで実装したいと考えています。

Channel Routingでは、図のようにtopとbottomに指定されたピンを同じ数字同士で接続する必要があります。そこで、horizontal segmentの長さを決めるためのプログラムを考えています。

python

1top = [1 ,0, 3, 1, 4, 2, 3, 2] 2bottom = [6, 4, 6, 6, 3, 0, 5, 5]

のように入力データを指定してピン1~6の長さをどのようにpythonで書けば良いかのアドバイスをいただきたいと思っております。
4の場合ですと、top[4]とbottom[1]の距離がわかればよいです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

numpyのwhereを使うのが簡単でしょう。

Python

1>>> top = [1 ,0, 3, 1, 4, 2, 3, 2] 2>>> bottom = [6, 4, 6, 6, 3, 0, 5, 5] 3>>> 4>>> import numpy as np 5>>> 6>>> def h_seg(top, bottom, num): 7... top_index = np.where(np.array(top) == num) 8... bottom_index = np.where(np.array(bottom) == num) 9... concat = np.concatenate([top_index, bottom_index], axis=1) 10... return concat.max() - concat.min() 11... 12>>> print(h_seg(top, bottom, 4)) 133 14>>> print(h_seg(top, bottom, 3)) 154 16>>> print(h_seg(top, bottom, 6)) 173

whereについては、NumPyで条件に応じた処理を行うnp.whereの使い方をお読みください。

投稿2022/01/12 09:59

ppaul

総合スコア24666

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

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

iface

2022/01/13 14:52

回答ありがとうございます。 whereの使い方を初めて知りました。 こちらの作成していただいたプログラムを参考にさせていただきます。
iface

2022/01/23 12:10

>>> concat = np.concatenate([top_index, bottom_index], axis=1) 質問失礼します。 こちらの構文を詳しく説明していただけますでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問