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

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

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

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

Python

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

Q&A

解決済

1回答

590閲覧

Numpyの3次元配列で最終列を追加しその最終列は特定の数字で埋めたい

popy

総合スコア9

NumPy

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

Python

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

2グッド

0クリップ

投稿2022/10/23 02:50

##環境
Python 3.10.7
OS:windows11

前提

numpyで3次元配列を用意し、その配列に対して任意の次元方向(axis)に対して最終列を追加し、その最終列は任意の数値で埋めたいです。
任意の数値を最終列ではなく、途中の列に挿入するパターンはinsertを用いることで実現することができました。
※(下記のコード "指定の次元で任意の数値で挿入するパターンはうまくいきました。" を参考願います。)
しかし、insertですと、任意の次元の最終列にどうしても追加することができません。
ネット情報を検索するとappendを使えば実現できるのかな?と思いましたが実際に試してみましたがエラーが生じます。
なるべく簡単な記述で実現したいです。

実現したいこと

numpyの3次元配列で任意の次元の最終列を追加して、その最終列は任意の数値で埋めたいです。

作成したい行列の例

python

1import numpy as np 2data=np.arange(24).reshape(4,3,2) 3print('元の行列') 4print(data) 5 6#元の行列 7#[[[ 0 1] 8# [ 2 3] 9# [ 4 5]] 10# 11# [[ 6 7] 12# [ 8 9] 13# [10 11]] 14# 15# [[12 13] 16# [14 15] 17# [16 17]] 18# 19# [[18 19] 20# [20 21] 21# [22 23]]] 22# 23#作成したい行列 24#[[[ 0 1] 25# [ 2 3] 26# [ 4 5] 27# [100 100]] 28# 29# 30# [[ 6 7] 31# [ 8 9] 32# [ 10 11] 33# [100 100]] 34# 35# [[ 12 13] 36# [ 14 15] 37# [ 16 17] 38# [100 100]] 39# 40# [[ 18 19] 41# [ 20 21] 42# [ 22 23] 43# [100 100]]]

試したこと

python

1import numpy as np 2data=np.arange(24).reshape(4,3,2) 3print(np.append(data,100,axis=1))

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

例外が発生しました: ValueError all the input arrays must have same number of dimensions, but the array at index 0 has 3 dimension(s) and the array at index 1 has 0 dimension(s)

指定の次元で任意の数値で挿入するパターンはうまくいきました。

python

1import numpy as py 2data=np.arange(24).reshape(4,3,2) 3 4print('任意の数値「100」で挿入後の行列') 5print(np.insert(data,1,100,axis=1)) 6 7#任意の数値「100」で挿入後の行列 8#[[[ 0 1] 9# [100 100] 10# [ 2 3] 11# [ 4 5]] 12# 13# [[ 6 7] 14# [100 100] 15# [ 8 9] 16# [ 10 11]] 17# 18# [[ 12 13] 19# [100 100] 20# [ 14 15] 21# [ 16 17]] 22# 23# [[ 18 19] 24# [100 100] 25# [ 20 21] 26# [ 22 23]]]
spoofy_dragon, melian😄を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

なるべく簡単な記述で実現したいです

python

1>>> np.insert(data, data.shape[1], 100, axis=1) 2array([[[ 0, 1], 3 [ 2, 3], 4 [ 4, 5], 5 [100, 100]], 6 7 [[ 6, 7], 8 [ 8, 9], 9 [ 10, 11], 10 [100, 100]], 11 12 [[ 12, 13], 13 [ 14, 15], 14 [ 16, 17], 15 [100, 100]], 16 17 [[ 18, 19], 18 [ 20, 21], 19 [ 22, 23], 20 [100, 100]]])

投稿2022/10/23 03:13

編集2022/10/23 03:30
melian

総合スコア19703

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

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

popy

2022/10/23 03:53

melian様 ご教授ありがとうございました。  大変シンプルな記述でまさしく、欲しい情報でした。 感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問