1. ホーム
  2. パイソン

AxisError: 1軸は1次元の配列の範囲外です。

2022-02-25 04:37:21
<パス

オリジナルアドレス

の実行中にエラーが発生しました。 np.concatenate(,axis=1) いつ

1次元のデータを2つ重ねたいとき、すなわち

# Put
a = [1,2,3]
b = [4,5,6]
# into
[[1,2,3],
[4,5,6]]


np.concatenate((a,b),axis=1) を使用する。

これは、a,bともに1次元のみのデータ、つまりaxis=0でaxis=1が存在しないためである

私は2つの解決策を見つけました。

  • np.vstack((A,B))

A、Bを縦に重ねることができます

print(np.vstack((a,b))) # Note that the argument passed is '(a,b)'
# [[1 2 3]] 
# [4 5 6]]


欠点は、このメソッドはスタッキングのために2つのベクトルしか渡すことができないことです。

  • np.newaxis + np.concatenate()

newaxisは、その名の通り新しい軸で、次のように使用します。

a = a[np.newaxis,:] # where ':' stands for all dimensions (in this case 3), and the shape of a becomes (1, 3), which is now two-dimensional
# [[1 2 3]]
b = b[np.newaxis,:]
# [[4 5 6]]


この時点で、2つの (1, 3) ベクトルを (1*2, 3) = (2, 3) の行列に積み上げることができます。 axis=0 1次元である

print(np.concatenate((a,b),axis=0))
# [[1 2 3] 
# [4 5 6]]


関連

Numpy:行列のマージ