形状の異なる 2 つの numpy 配列を追加したいのですが、ブロードキャストを行わずに、「欠落している」値はゼロとして扱われます。次のような例でおそらく最も簡単です
[1, 2, 3] + [2] -> [3, 2, 3]
また
[1, 2, 3] + [[2], [1]] -> [[3, 2, 3], [1, 0, 0]]
形は事前にわかりません。
それぞれの np.shape の出力をいじり、両方を保持する最小の形状を見つけようとし、それぞれをその形状のゼロ配列に埋め込んでから追加します。しかし、かなり手間がかかるようですが、もっと簡単な方法はありますか?
前もって感謝します!
編集:「多くの作業」とは、機械ではなく「私にとって多くの作業」を意味し、効率よりも優雅さを求めています。両方を保持する最小の形状を得るための私の努力は
def pad(a, b) :
sa, sb = map(np.shape, [a, b])
N = np.max([len(sa),len(sb)])
sap, sbp = map(lambda x : x + (1,)*(N-len(x)), [sa, sb])
sp = np.amax( np.array([ tuple(sap), tuple(sbp) ]), 1)
かわいくない:-/