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

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

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

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

Q&A

2回答

1263閲覧

ndarrayで2次元配列として認識させたい

Lily1007

総合スコア10

Python

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

0グッド

0クリップ

投稿2021/03/25 13:17

前提・実現したいこと

halo.dat

3.10000e+01 8.48550e+05 8.60907e+05

というdatファイルを読みこんで,それぞれの値を利用したいです。(テストの為に1行しか無いdatファイルを生成しました。)
そのために

python

1ID_posi = np.loadtxt('halo.dat') 2idx = int(ID_posi[i,0])

と読み込みましたところ,以下のようなエラーがでました。

python

1idx = int(ID_posi[i,0]) #SIGO_idx 2IndexError: too many indices for array
print(ID_posi) print(type(ID_posi)) print(ID_posi.shape) ```でみてみると [3.10000e+01 8.48550e+05 8.60907e+05] <type 'numpy.ndarray'> (3,) となりどうやら2次元配列として認識されていないようです。 これはどう読み込めば2次元配列として読み込めてID_posi[0,0] = 3.10000e+01と値を得ることができるのでしょうか? よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

一行だけだからではないでしょうか。
二行にすれば二次元配列になりました。

python

1>>> import io 2>>> import numpy as np 3>>> indata = '''3.10000e+01 8.48550e+05 8.60907e+05 4... 2.83000e+02 5.13720e+05 1.83127e+04''' 5>>> 6>>> with io.StringIO(indata) as f: 7... ID_posi = np.loadtxt(f) 8... 9>>> print(ID_posi.shape) 10(2, 3) 11>>> print(ID_posi) 12[[3.10000e+01 8.48550e+05 8.60907e+05] 13 [2.83000e+02 5.13720e+05 1.83127e+04]]

投稿2021/03/25 14:39

ppaul

総合スコア24670

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

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

0

通常は複数行あって2次元として読み込めているが、テスト用で1行のデータを作ったら、1次元で読み込まれてしまう、ということでしょうか。

python

1ID_posi = np.loadtxt('halo.dat', ndmin=2)

と、ndminで最低次元数を2にすれば望みの形になるかと。

投稿2021/03/25 14:31

bsdfan

総合スコア4794

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問