Я хочу иметь массив numpy двух других массивов (каждый из них имеет другую форму). Как я знаю, по этой причине нужно использовать: dtype = object
в определении основного массива.numpy.array с элементами различной формы
Например, определим (в Python 2.7) наши массивы
a0 = np.arange(2*2).reshape(2,2)
a1 = np.arange(3*3*2).reshape(3,3,2)
b = np.array([a0,a1], dtype = object)
Это отлично работает: b[1]
так же, как a1
. Но если изменить размер в a0
от (2,2) до (3,3) происходит нечто странное:
a0 = np.arange(3*3).reshape(3,3)
a1 = np.arange(3*3*2).reshape(3,3,2)
b = np.array([a0,a1], dtype = object)
На этот раз b[1]
и a1
не равны, они даже имеют разные формы. В чем причина этого странного поведения?
Возможно, для меня существует совершенно другое решение. Но я не хочу использовать списки или кортежи, потому что хочу разрешить добавление, например b + b
. Понятно, что я могу написать свой собственный класс для этой цели, но есть ли более простой способ?
В вашем примере невозможно выполнить арифметику для всего массива 'x'. Например, 'x + x' не будет работать. – cheyp
Да, вы можете! Вам просто нужно заполнить все элементы 0..4, как я сказал (но только дал пример для первых двух). – mdurant