Я даже не уверен, как вы попали на np.array
, содержащий np.array
с внутри. Однако, простое приведение должно исправить это, если данные выровнены, например:
import numpy as np
x = [np.random.randint(1, 100, (2, 3, 4)) for _ in range(2 * 3)]
x = np.array(x)
x.shape
# (6, 2, 3, 4)
Если данные не выровнены, вы должны сначала выровнять их:
import numpy as np
x = [np.random.randint(1, 100, (2, 3, np.random.randint(1, 5))) for _ in range(2 * 3)]
print([y.shape for y in x])
# [(2, 3, 2), (2, 3, 1), (2, 3, 1), (2, 3, 4), (2, 3, 1), (2, 3, 1)]
# x = np.array(x) will cause ValueError...
def zero_padding(arr, shape):
result = np.zeros(shape, dtype=arr.dtype)
mask = tuple(slice(None, d) for d in arr.shape)
result[mask] = arr
return result
x = [zero_padding(y, (2, 3, 4)) for y in x]
x = np.array(x)
x.shape
# (6, 2, 3, 4)
Примечание: более сложная версия этого zero_padding()
предоставляется NumPy's pad()
или FlyingCircus num.reframe()
.
Отказ от ответственности: я являюсь основным автором FlyingCircus.