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

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

詳細はこちら
多次元配列

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

5490閲覧

配列を配列に代入したい。

shitsuki0606

総合スコア0

多次元配列

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2021/01/08 06:43

前提・実現したいこと

変数onehot
float32
(7367, 1652)
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]

のデータを(7367,7367)のzerosで作ったonehot_0という二次元配列にfor文で代入したいです。

ソースコード

python

1for x in onehot: 2 for onehot_0 in x: 3 print(onehot_0)

以上のコードでは
0.0
0.0
0.0
0.0
このような結果になってしまいます。

python

1for onehot_0 in onehot: 2 print(onehot_0)

では
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ... 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

python

1onehot_0.shape

(1652,)
(1652,)
(1652,)

になってしまいます。

どうすれば代入できるでしょうか?

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

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

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

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

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

ppaul

2021/01/08 07:13

代入は一切しているように見えないのですが、shitsuki0606さんは、どの行で代入したと思っているのでしょう。 初心者であることは見れば分かりますから、正しい答えは期待していませんので、気楽に答えてください。どこから説明すれば良いかを知るために、まずshitsuki0606さんの理解度を確認したいだけです。
meg_

2021/01/08 07:39

onehotとonehot_0のshapeが異なるから代入方法が分からない、ということでしょうか? shapeが同じ配列同士なら代入するコードは書けるのでしょうか?
guest

回答1

0

pythonだけをインストールしたときに使える機能の中には二次元配列はたぶんありません。またリストのことを配列と呼ぶ人がいますが、リストは配列ではありません。
numpyをインストールするとndarrayという配列が使えるようになります。
pandasではDataFrameというものが使えますが、これは配列と呼ばずにデータフレームと呼んで下さい。
リストなのかndarrayなのかDataFrameなのかによって代入の方法は異なります。

shitsuki0606さんのデータはnumpyのndarrayのように見えるので、その前提で説明します。
縦や横のサイズが違うndarrayの代入はスライスを使って行います。

python

1>>> import numpy as np 2>>> a = np.arange(9).reshape((3,3)) 3>>> z = np.zeros(16).reshape((4,4)) 4>>> print(a) 5[[0 1 2] 6 [3 4 5] 7 [6 7 8]] 8>>> print(z) 9[[0. 0. 0. 0.] 10 [0. 0. 0. 0.] 11 [0. 0. 0. 0.] 12 [0. 0. 0. 0.]] 13>>> z[:3, :3] = a 14>>> print(z) 15[[0. 1. 2. 0.] 16 [3. 4. 5. 0.] 17 [6. 7. 8. 0.] 18 [0. 0. 0. 0.]]

求めているものが、この機能でなければ、質問にもう少し詳しい情報を掲載してください。

投稿2021/01/09 08:57

編集2021/01/09 13:57
ppaul

総合スコア24670

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

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

bsdfan

2021/01/09 12:21

利用されるケースは少なそうですが、arrayモジュールというのがあるので、 > pythonだけをインストールしたときに使える機能の中には配列はありません は、そうとも言いきれいないと思います。 (配列とリストの違いについての指摘は、その通りだと思います。)
ppaul

2021/01/09 13:56

そうでした。 二次元以上の配列は、と書く方が正確です。 と書いていて思い出したのですが、pythonにも別の配列があったような気がしてきました。 正確なことを思い出せないので、思い出したらまた修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問