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

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

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

配列

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

Q&A

解決済

1回答

536閲覧

配列の結合のデフォルトの文字列の意味がわかりません

spi

総合スコア5

多次元配列

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

配列

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

0グッド

0クリップ

投稿2019/09/01 06:32

pythonの配列の結合について勉強中です

下記のページを見ているのですが
配列の結合

np.r_['-1,2,0', index expression]の'-1,2,0'について教えていただきたいです

-1がaxis=-1で一番最後の軸方向に結合するという意味なのはわかるのですが
残り二つの数字がわかりません
具体例も交えて教えていただけると嬉しいです

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

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

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

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

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

meg_

2019/09/01 07:29

手元で色々試してみたら理解が深まるのではないでしょうか。
guest

回答1

0

ベストアンサー

numpy.r_['a,b,c', array1, array2, ..., arrayn] とした場合、文字列の各数値は以下を意味します。

  • 'a': 結合する軸を指定する。
  • 'b': 次元数が b 未満の場合、結合前にサイズ1の次元を挿入して、次元数を b にする。(デフォルトは0)
  • 'c': 次元数が b 未満の場合、元の配列 axis=0 が axis=c の位置にくるようサイズ1の次元を挿入する。(デフォルトは0、つまり axis=-1 に次元を挿入する。)

具体的な例は下記を参照ください。

numpy - 配列の結合、分割、要素の追加、削除

追記

この文も読んだのですが'b' 'c'のところの意味がわかりませんでした。

python

1x = np.array([1, 2]) 2y = np.array([[5, 6], 3 [8, 9]]) 4 5z = np.r_['1,2,0', x, y] 6print(z) 7# [[1 5 6] 8# [2 8 9]]

x は1次元配列、y は2次元配列です。

python

1x = np.array([1, 2]) 2y = np.array([[5, 6], 3 [8, 9]]) 4 5# x, y の次元 6print(x.ndim) # 1次元配列 7print(y.ndim) # 2次元配列 8 9# x, y の形状 10print(x.shape) # 形状 (2,) 11print(y.shape) # 形状 (2, 2)

b=2 が指定されているので、2次元未満の配列 x は結合前にサイズ1の次元を挿入して2次元配列にします。
この際にどの位置に挿入するかですが、axis=0 が axis=c の位置にくるよう挿入します。

今回の場合、c=0 なので、後ろに挿入することになり、(2, 1) となります。

python

1x = np.array([[1], [2]]) # 形状が (2, 1) 2y = np.array([[5, 6], 3 [8, 9]])

最後に (2, 1) と (2, 2) の2次元配列を axis=a の方向で結合します。
今回は a=1 なので、横方向に結合されます。

追記

c の役割は簡単にいうと、次元数が b 未満の場合、どこに位置を挿入するかを制御します。

イメージ説明

イメージ説明

投稿2019/09/01 06:52

編集2019/09/01 14:34
tiitoi

総合スコア21956

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

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

spi

2019/09/01 07:05

この文も読んだのですが'b' 'c'のところの意味がわかりませんでした。 詳しく教えていただけるとありがたいです
tiitoi

2019/09/01 11:39 編集

具体例を追記しましたがいかがでしょうか。 numpy 配列の dimension (何次元配列か)、shape (各次元のサイズ)、axis という概念をまず理解している必要があります。 これらの用語でわからない部分があれば補足するので教えて下さい
spi

2019/09/01 14:05

何度もすみません。 概念については理解できたと思うのですが axis=0 が axis=c の位置にくるよう挿入 というところが分からないです。どういうことでしょうか?
tiitoi

2019/09/01 14:32 編集

形状 (2,) の配列にサイズ1の次元を挿入して2次元配列にする場合、(2, 1) または (1, 2) の2通りが考えられますが、この1を挿入する場所の制御をパラメータ c で行います。 c = 0 の場合、axis=0 部分は拡張後 axis=0 にくるように1を挿入する、つまり、後ろに1を挿入して (2, 1) と拡張することを意味します。 c = 1 の場合、axis=0 部分は拡張後 axis=1 にくるように1を挿入する、つまり、前に1を挿入して (1, 2) と拡張することを意味します。 図を追記しました。
spi

2019/09/01 14:36

追記のc=0の時の説明ですが 先頭に1をではなく後ろに1を挿入ですか?
tiitoi

2019/09/01 14:38

すいません。回答に追記した図が間違っていました。 c = 0 のときは axis=0 の2は拡張後も axis=0 にくるように1を挿入するので、後ろに1を挿入します。
spi

2019/09/01 14:43

初学者にもわかる説明ありがとうございます。大変分かりやすかったです どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問