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

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

詳細はこちら
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

Q&A

解決済

1回答

903閲覧

配列の要素全てを型変換したい

Lily1007

総合スコア10

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

0グッド

0クリップ

投稿2021/02/27 08:26

前提・実現したいこと

配列の要素全てを型変換したいです
以下のようなデータをfloatからintに変換したいです。

data = [[ 722. 1386.] [ 761. 327.] [ 797. 1449.] [ 848. 1276.] [ 852. 994.] [ 868. 1262.] [ 960. 1912.] [1024. 180.] [1148. 2019.] [1170. 2177.] [1179. 1349.] [1191. 1800.] [1203. 403.] [1257. 1935.] [1298. 2397.] [1328. 1482.] [1386. 285.] [1394. 2097.] [1405. 1987.] [1436. 2461.] [1439. 820.] [1457. 2412.] [1458. 1761.]]

python

1data1 = [] 2for i in range(data.shape[0]): 3 for j in range(data.shape[1]): 4 data1[i][j] = int(data[i][j]) 5 print(type(data1[i][j]))

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-18-06731334e397> in <module> 2 for i in range(data.shape[0]): 3 for j in range(data.shape[1]): ----> 4 data1[i][j] = int(data[i][j]) 5 print(type(data1[i][j])) IndexError: list index out of range

これはdata1というリストの生成の仕方がよくないのでしょうか?

他にも

python

1for i in range(data.shape[0]): 2 for j in range(data.shape[1]): 3 data[i][j] = int(data[i][j]) 4 print(type(data[i][j]))

としたところtypeはfloatのままで変わりませんでした。何故int型にならなかったか、こちらもわかりませんでした。

補足情報(FW/ツールのバージョンなど)

jupyterでpython3を使用しております。

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

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

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

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

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

ppaul

2021/02/27 08:38

dataの定義でエラーになります。 間違っていませんか?
guest

回答1

0

ベストアンサー

dataはおそらくnumpyのndarrayでしょう。
data1は空リストなので、data1[0]を調べる段階でエラーになります。
ndarrayとリストの違いを良く理解してください。

dataがnumpyのndarrayなら、以下で出来ます。

python

1>>> import numpy as np 2>>> data = np.array([[ 722, 1386,], 3... [ 761., 327.,], 4... [ 797., 1449.,], 5... [ 848., 1276.,], 6... [ 852., 994.,], 7... [ 868., 1262.,], 8... [ 960., 1912.,], 9... [1024., 180.,], 10... [1148., 2019.,], 11... [1170., 2177.,], 12... [1179., 1349.,], 13... [1191., 1800.,], 14... [1203., 403.,], 15... [1257., 1935.,], 16... [1298., 2397.,], 17... [1328., 1482.,], 18... [1386., 285.,], 19... [1394., 2097.,], 20... [1405., 1987.,], 21... [1436., 2461.,], 22... [1439., 820.,], 23... [1457., 2412.,], 24... [1458., 1761.,]]) 25>>> 26>>> data1 = np.array(data, dtype=int) 27>>> print(data1) 28[[ 722 1386] 29 [ 761 327] 30 [ 797 1449] 31 [ 848 1276] 32 [ 852 994] 33 [ 868 1262] 34 [ 960 1912] 35 [1024 180] 36 [1148 2019] 37 [1170 2177] 38 [1179 1349] 39 [1191 1800] 40 [1203 403] 41 [1257 1935] 42 [1298 2397] 43 [1328 1482] 44 [1386 285] 45 [1394 2097] 46 [1405 1987] 47 [1436 2461] 48 [1439 820] 49 [1457 2412] 50 [1458 1761]] 51>>> print(type(data1[0,0])) 52<class 'numpy.int32'>

投稿2021/02/27 08:50

編集2021/02/27 08:53
ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問