Вы должны убедиться, что вы предустановили правильное количество измерений и элементов вдоль каждого измерения, чтобы использовать простые назначения для его заполнения.
Например, вы хотите сохранить 3 2x3
матрицы:
number_of_matrices = 3
matrix_dim_1 = 2
matrix_dim_2 = 3
M = np.empty((number_of_matrices, matrix_dim_1, matrix_dim_2))
M[0] = np.array([[ 0, 1, 2], [ 3, 4, 5]])
M[1] = np.array([[100, 101, 102], [103, 104, 105]])
M[2] = np.array([[ 10, 11, 12], [ 13, 14, 15]])
M
#array([[[ 0., 1., 2.], # matrix 1
# [ 3., 4., 5.]],
#
# [[ 100., 101., 102.], # matrix 2
# [ 103., 104., 105.]],
#
# [[ 10., 11., 12.], # matrix 3
# [ 13., 14., 15.]]])
Вы подход содержит некоторые проблемы. Массив вы хотите сохранить не является допустимым ndimensional NumPy массива:
np.array([[0], [0,1,2], [3,4,5]])
# array([[0], [0, 1, 2], [3, 4, 5]], dtype=object)
# |----!!----|
# ^-------^----------^ 3 items in first dimension
# ^ 1 item in first item of 2nd dim
# ^--^--^ 3 items in second item of 2nd dim
# ^--^--^ 3 items in third item of 2nd dim
Он создает массив в 3 пункт, содержащий Python list
объектов. Вероятно, вы хотите иметь массив, содержащий числа, поэтому вам нужно заботиться о размерах. Ваш np.array([[0], [0,1,2], [3,4,5]])
может быть массивом 3x1 или массивом 3x3, numpy не знает, что делать в этом случае и сохраняет его как объекты (массив теперь имеет только 1 размер!).
Другая проблема заключается в том, что вы хотите установить один элемент массива предопределенного с другим массивом, который содержит более одного элемент. Это невозможно (за исключением того, что у вас уже есть object
-array). У вас есть два варианта здесь:
Fill как многие элементы в предопределенные массиве, которые требуются в массиве:
M[0, :, :] = np.array([[0,1,2], [3,4,5]])
# ^--------------------^--------^ First dimension has 2 items
# ^---------------^-^-^ Second dimension has 3 items
# ^------------------------^-^-^ dito
# if it's the first dimension you could also use M[0]
Создайте object
массив и установить элемент (не рекомендуется, рыхлое большинство преимуществ Numpy массивов):
M = np.empty((3), dtype='object')
M[0] = np.array([[0,1,2], [3,4,5]])
M[1] = np.array([[0,1,2], [3,4,5]])
M[2] = np.array([[0,1,2], [3,4,5]])
M
#array([array([[0, 1, 2],
# [3, 4, 5]]),
# array([[0, 1, 2],
# [3, 4, 5]]),
# array([[0, 1, 2],
# [3, 4, 5]])], dtype=object)
Ваши примеры не будут работать, потому что вы забыли включить '[]' в вызовы 'np.array'. Также, пожалуйста, используйте реальные числа вместо неопределенных переменных, чтобы было легче видеть, что вы хотите. В настоящее время каждый из 't',' x000' может быть числом или numpy-массивом или что-то еще. См. Также: [mcve] – MSeifert
Спасибо, '[]', к сожалению, не то, что отсутствует. Я отредактировал этот пример, и я также обнаружил, что мне нужно 'M.shape = (m, n, 3)'. Но это все равно не сработает. – grinsbaeckchen
Почему бы просто не собрать список на массивах? – hpaulj