###実現したいこと
PythonのNumPyで作成した3次元配列(ndarray)に要素をinsertしたいのですが、axsis=2の場合にどうしてもエラーになってしまいます。どのように修正すればよいのかご教授いただけませんでしょうか。
###プログラム
下記プログラムの最後のほうのnp.insert(arr=array1, obj=1, values=array2, axis=2)
の部分ででるエラーを解決したいです。
ndarray.py
1import numpy as np 2 3array1 = np.array( 4 [[[ 1, 2, 3, 4], 5 [ 5, 6, 7, 8], 6 [ 9,10,11,12]], 7 8 [[13,14,15,16], 9 [18,19,20,21], 10 [22,23,24,25]]] 11 ) 12print("array1.shape: " + str(array1.shape)) 13array2 = np.array( 14 [[[26], 15 [28], 16 [30]], 17 18 [[32], 19 [34], 20 [36]]] 21 ) 22print("array2.shape: " + str(array2.shape)) 23 24print("===== append =====") 25result = np.append(arr=array1, values=array2, axis=2) 26print(result) 27 28print("===== insert =====") 29result = np.insert(arr=array1, obj=1, values=array2, axis=2) 30print(result)
###実行結果、エラー出力
array1.shape: (2, 3, 4) array2.shape: (2, 3, 1) ===== append ===== [[[ 1 2 3 4 26] [ 5 6 7 8 28] [ 9 10 11 12 30]] [[13 14 15 16 32] [18 19 20 21 34] [22 23 24 25 36]]] ===== insert ===== --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-80-4702bf3c55bc> in <module>() 27 28 print("===== insert =====") ---> 29 result = np.insert(arr=array1, obj=1, values=array2, axis=2) 30 print(result) C:\Users\ksaito\Anaconda3\lib\site-packages\numpy\lib\function_base.py in insert(arr, obj, values, axis) 4491 new[slobj] = arr[slobj] 4492 slobj[axis] = slice(index, index+numnew) -> 4493 new[slobj] = values 4494 slobj[axis] = slice(index+numnew, None) 4495 slobj2 = [slice(None)] * ndim ValueError: could not broadcast input array from shape (3,1,2) into shape (2,3,2)
appendは問題なく動作しましたが、insertではエラーになりました。
また、エラー出力されたfrom shape (3,1,2) into shape (2,3,2)
のメッセージが、自分が定義した配列と次元が異なってしまっていて気になっています。
###試したこと
axis=0に対して下記配列のinsertはOKでした。
axis0.py
1axis0 = np.array( 2 [[[26, 27, 28, 29], 3 [30, 31, 32, 33], 4 [34, 35, 36, 37]]] 5 )
また、axis=1に対して下記配列のinsertもOKでした。
axis1.py
1axis1 = np.array( 2 [[[26, 27, 28, 29]], 3 [[34, 35, 36, 37]]] 4 )
###実行環境
環境は以下になります。
- Python: 3.5.1
- NumPy: 1.11.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/12 15:25
2016/08/12 15:59