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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

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

Python

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

Q&A

解決済

1回答

2548閲覧

IndexError: index 0 is out of bounds for axis 1 with size 0について

yositigu

総合スコア17

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2018/06/14 06:39

次のプログラムを実行するとエラーになってしまい、原因および治し方を教えてください。

python

1def vCAL_RHO(p1s, p2): 2 ra = 6378.140 3 rb = 6356.755 4 F = (ra - rb)/ra 5 rad_A = np.radians(p1s) 6 rad_B = np.radians(p2) 7 pA = np.arctan(rb/ra*np.tan(rad_A[:, 0])) 8 pB = np.arctan(rb/ra*np.tan(rad_B[0])) 9 xx = np.arccos(np.sin(pA)*np.sin(pB) + np.cos(pA)*np.cos(pB)*np.cos(rad_A[:, 1] - rad_B[1])) 10 c1 = (np.sin(xx) - xx)*(np.sin(pA) + np.sin(pB))**2/np.cos(xx/2)**2 11 c2 = (np.sin(xx) + xx)*(np.sin(pA) - np.sin(pB))**2/np.sin(xx/2)**2 12 dr = F/8*(c1 - c2) 13 rho = ra*(xx + dr) 14 return rho 15 16 17if __name__ == '__main__': 18 19##SQLサーバーにつないでデータ取得 20 21 query = text("""select lat,lon from tmp.test1""") 22 result = engine.execute(query) 23 result = result.fetchall() 24 25 query2 = text("""select lat,lon from tmp.test2""") 26 result2 = engine.execute(query2) 27 result2 = result2.fetchall() 28 29 points=[] 30 base_points=[] 31 32 for u in result: 33 p = [float(u[0]),float(u[1])] 34 points.append(p) 35 36 for u in result2: 37 p = [float(u[0]),float(u[1])] 38 base_points.append(p) 39 40 points = np.array(points) 41 base_points = np.array(base_points) 42 43##2点間の距離計算の処理開始 44 centers = [] 45 for _ in range(3): 46 mcnt = 0 47 best = 0 48 mcovered = None 49 for i, bp in enumerate(base_points): 50 dist = vCAL_RHO(points, bp) 51 covered = dist < 50. 52 cnt = np.sum(covered) 53 if cnt > mcnt: 54 mcovered = covered 55 mcnt = cnt 56 best = i 57 centers.append(base_points[best]) 58 points = points[np.logical_not(mcovered)] 59 60 centers = np.array(centers) 61 fig, ax = plt.subplots(dpi=100) 62 ax.set_aspect('equal') 63 ax.scatter(points[:, 0], points[:, 1], s=10) 64 ax.scatter(centers[:, 0], centers[:, 1], c='red', s=15**2) 65 plt.show()

エラー内容
クエリの返り値がないときに、pointsがnp.array([[]])のときではないかと考えております。
治し方もわからず教えてください。


python

1IndexError Traceback (most recent call last) 2<ipython-input-3-961842822e4d> in <module>() 3 102 mcovered = None 4 103 for i, bp in enumerate(base_points): 5--> 104 dist = vCAL_RHO(points, bp) 6 105 covered = dist < 50. 7 106 cnt = np.sum(covered) 8 9<ipython-input-3-961842822e4d> in vCAL_RHO(p1s, p2) 10 39 rad_A = np.radians(p1s) 11 40 rad_B = np.radians(p2) 12---> 41 pA = np.arctan(rb/ra*np.tan(rad_A[:, 0])) 13 42 pB = np.arctan(rb/ra*np.tan(rad_B[0])) 14 43 xx = np.arccos(np.sin(pA)*np.sin(pB) + np.cos(pA)*np.cos(pB)*np.cos(rad_A[:, 1] - rad_B[1])) 15 16IndexError: index 0 is out of bounds for axis 1 with size 0

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

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

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

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

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

guest

回答1

0

ベストアンサー

クエリの返り値がないときに、pointsがnp.array([[]])のときではないかと考えております。

それがわかってるなら、points が[]かどうかをチェックして、あなたの思うように治せばいいんじゃないでしょうか。

投稿2018/06/14 08:56

y_waiwai

総合スコア87747

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問