Вы не можете иметь массив numpy с формой: (2, "Variable-size", 3) , но вы можете объединить два массива с формой ("Variable-size" , 3) до (shape1 [0] + shape2 [0], 3) .
Как вы написали:
Я ищу, поскольку они производят вывод, который имеет (9, 3) форму
numpy.concatenate()
может быть решением вашей проблемы:
np.concatenate((a,b))
Из:
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
Если вы все еще хотите поддерживать переменное 3-е измерение в numpy, единственный способ сделать это с заполнением , здесь с заполнением нулями :
import numpy as np
a = np.array([
[50., 50., 50.],
[50., 50., 50.],
[50., 50., 50.],
[50., 50., 50.],
[0., 0., 0.] # zero padding
])
b = np.array([
[80., 80., 80.],
[80., 80., 80.],
[80., 80., 80.],
[80., 80., 80.],
[80., 80., 80.]
])
new_matrix = [a, b]
print(new_matrix)
Из:
[array([[50., 50., 50.],
[50., 50., 50.],
[50., 50., 50.],
[50., 50., 50.],
[ 0., 0., 0.]]), array([[80., 80., 80.],
[80., 80., 80.],
[80., 80., 80.],
[80., 80., 80.],
[80., 80., 80.]])]
Этот метод широко используется в решениях для обработки изображений.
С помощью этого трюка вы также можете использовать все положительные свойства матричных операций в numpy
, но вы можете сохранить свою форму данных относительно гибкой.
Как упомянул выше Виллем, numpy работает только с «прямоугольными» данными, а операции с матрицами с переменными измерениями в большинстве случаев будут неоднозначными.
Если вы даже не хотите использовать какое-либо из упомянутых решений, вам нужно выбрать комбинации списков и массивов, то есть массивов с любыми измерениями в списке.