2015-10-30 3 views
2

Я новичок в волшебном мире python.Объявить массив матрицы в python

1) Мне нужно иметь массив (arrMtx), где каждый элемент этого вектора является матрицей. Как я могу объявить массив arrMtx?

2) Я полагаю, для заполнения arrMtx я должен сделать что-то вроде этого:

mtx = [[0.0 for x in range(NUM_COLUMN)] for x in range(NUM_ROW)] 
arrMtx[i] = mtx 

У вас есть какие-либо предложения?

+0

Итак, вам нужен список 2d-массивов? Каков ваш ожидаемый результат? – Tgsmith61591

ответ

0
NUM_COLUMN = 4 
NUM_ROW = 2 
NUM_MATRIX = 3 
mtx = [[0.0 for x in range(NUM_COLUMN)] for x in range(NUM_ROW)] 
arrMtx = [mtx for x in range(NUM_MATRIX)] 
print arrMtx 

Выход:

[[[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]] 
0

Если вы хотите получить список 2d массивов (матриц):

num_matrices = 3 ## Let's say 
ncol = 3 
nrow = 3 
arrMtx = [[[0 for j in range(ncol)] for i in range(nrow)] for k in range(num_matrices)] 

Выход:

>>>[[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]] 
0

Попробуйте это просто, где n нет. из elemnts в arrMtx

>>>[[[0.0 for x in range(NUM_COLUMN)] for x in range(NUM_ROW)]]*n #no. of elements 

Это означает, что

>>>mtx = [[0.0 for x in range(NUM_COLUMN)] for x in range(NUM_ROW)] 
>>>arrMtx = [mtx] * n 
0

В Python, Lists являются использование как vector in c++.

В списке, вы можете append, как вам нравится:

L = [0,1,2,3....] 

После списка дописывания будет:

L.append('str') 
L = [0,1,2,3,'str'....] 

Таким образом, вы можете что-нибудь добавить вы можете хотеть.

Так сделать матрицу, вам нужно list of list как:

L = [[....], [.....]....] 

mtx = [[0.0 for x in range(NUM_COLUMN)] for x in range(NUM_ROW)] 

Здесь MTX также матрица. Вы можете добавить его в другой список:

arrMtx = [] 
arrMtx.append(mtx) 

Вопрос 1 ответ:

Вы можете объявить array arrMtx как:

arrMtx = [] 

Это создает список. Затем вы добавляете список, это будет массив.

Смежные вопросы