2 回答

TA貢獻1799條經驗 獲得超6個贊
您不能擁有一個維度長度可變的數組。a和b很可能是列表的列表,而不是數組。您可以將列表理解與 zip 一起使用:
np.array([x+y for x,y in zip(a,b)])
編輯:或根據提供的注釋,如果a和b是數組列表:
np.array([np.vstack((x,y)) for x,y in zip(a,b)])
您的示例的輸出如下所示:
[[[ 7. 2. 3.]
[ 1. 2. 9.]
[ 1. 2. 3.]
[ 8. 0. 3.]
[ 1. 7. 3.]]
[[ 1. 2. 3.]
[ 3. 9. 0.]
[ 2. 2. 3.]
[ 8. 1. 3.]
[ 0. 2. 3.]]
[[ 0. 2. 7.]
[ 1. nan 3.]
[10. 0. 3.]
[ 0. nan 9.]
[10. nan 3.]]
[[10. 0. 3.]
[nan 9. 9.]
[10. nan 3.]
[ 0. 2. nan]
[ 1. nan 3.]]
[[ 8. 2. 0.]
[ 2. 2. 3.]
[ 8. 1. 3.]
[ 1. 2. 3.]
[ 1. 2. nan]]
[[ 0. 2. 3.]
[ 1. 2. 9.]
[ 1. 2. 3.]
[ 1. 0. 3.]
[ 1. 2. 3.]]]

TA貢獻1868條經驗 獲得超4個贊
要執行串聯,請運行:
result = np.concatenate([a, b], axis=1)
為了測試這段代碼,我創建了a和b:
a = np.stack([ np.full((2, 3), i) for i in range(1, 6)], axis=1)
b = np.stack([ np.full((2, 3), i + 10) for i in range(1, 4)], axis=1)
所以它們包含:
array([[[1, 1, 1],? ? ? ? array([[[11, 11, 11],
? ? ? ? [2, 2, 2],? ? ? ? ? ? ? ? [12, 12, 12],
? ? ? ? [3, 3, 3],? ? ? ? ? ? ? ? [13, 13, 13]],
? ? ? ? [4, 4, 4],? ? ? ??
? ? ? ? [5, 5, 5]],? ? ? ? ? ? ? [[11, 11, 11],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [12, 12, 12],
? ? ? ?[[1, 1, 1],? ? ? ? ? ? ? ? [13, 13, 13]]])
? ? ? ? [2, 2, 2],
? ? ? ? [3, 3, 3],
? ? ? ? [4, 4, 4],
? ? ? ? [5, 5, 5]]])
它們的形狀是:(2, 5, 3)和(2, 3, 3)
我的串聯結果是:
array([[[ 1,? 1,? 1],
? ? ? ? [ 2,? 2,? 2],
? ? ? ? [ 3,? 3,? 3],
? ? ? ? [ 4,? 4,? 4],
? ? ? ? [ 5,? 5,? 5],
? ? ? ? [11, 11, 11],
? ? ? ? [12, 12, 12],
? ? ? ? [13, 13, 13]],
? ? ? ?[[ 1,? 1,? 1],
? ? ? ? [ 2,? 2,? 2],
? ? ? ? [ 3,? 3,? 3],
? ? ? ? [ 4,? 4,? 4],
? ? ? ? [ 5,? 5,? 5],
? ? ? ? [11, 11, 11],
? ? ? ? [12, 12, 12],
? ? ? ? [13, 13, 13]]])
形狀是(2, 8, 3),正如它應該的那樣。
我嘗試了您評論中的代碼。執行后a = list((map(lambda i: a[:i], range(1,a.shape[0]+1)))),結果是:
[array([[1, 1]], dtype=int64),
?array([[1, 1],
? ? ? ? [1, 1]], dtype=int64),
?array([[1, 1],
? ? ? ? [1, 1],
? ? ? ? [1, 1]], dtype=int64),
?array([[1, 1],
? ? ? ? [1, 1],
? ? ? ? [1, 1],
? ? ? ? [1, 1]], dtype=int64),
?array([[1, 1],
? ? ? ? [1, 1],
? ? ? ? [1, 1],
? ? ? ? [1, 1],
? ? ? ? [1, 1]], dtype=int64),
...
所以a是不同大小的數組的列表。
您構建數據的方式有問題。首先檢查您的兩個數組是否都是3-D的,并且它們的形狀僅在軸 1 上有所不同。只有這樣您才能在它們上運行我的代碼。現在a和b都是普通的pythonic 列表,而不是Numpy數組!
添加回答
舉報