2015-10-16 2 views
2

есть ли способ создать матрицу, чьи записи также являются матрицами в Python? Я не вижу никакого способа сделать это с помощью numpy.матричные записи также матрицы в python

* Другими словами, я хочу, чтобы A [i, j] также была матрицей.

+1

Ну, вы можете создать 4-мерные массивы, тогда записи для 'A [i, j]' будут матрицами. Но сам А был бы четырехмерным массивом (а не матрицей). Это то, что вы хотите? –

+0

Матрица всегда должна быть двумерной. Но вы можете проверить, можете ли вы это сделать, используя ndarray. –

+0

Вы специально хотите 'np.matrix', или будет' np.array' в порядке? Массив может быть 3d, 4d и т. Д., Матрица всегда 2d. – hpaulj

ответ

3

Если 4d массив в порядке, то

x = np.zeros((3,4,2,2), dtype=int) 

где

x[0,0].shape # (2,2) 

Если он должен быть np.matrix типа, то он должен быть 2d. Это может быть dtype=object, где каждый элемент, в свою очередь, является 2d-матрицей. Эта конструкция немного запутана (намного больше?).

Сделать пустой массив с DTYPE = объект

In [565]: x=np.zeros((2,2),dtype=object) 

In [566]: x 
Out[566]: 
array([[0, 0], 
     [0, 0]], dtype=object) 

Заполните каждый элемент матрицы:

In [567]: x[0,0]=np.matrix([[0,1],[2,3]]) 
In [569]: x[0,1]=np.matrix([[0,1],[2,3]]) 
In [570]: x[1,0]=np.matrix([[0,1],[2,3]]) 
In [571]: x[1,1]=np.matrix([[0,1],[2,3]]) 

In [572]: x 
Out[572]: 
array([[matrix([[0, 1], 
     [2, 3]]), matrix([[0, 1], 
     [2, 3]])], 
     [matrix([[0, 1], 
     [2, 3]]), matrix([[0, 1], 
     [2, 3]])]], dtype=object) 

превратить его в matrix:

In [573]: xm=np.matrix(x) 

In [574]: xm 
Out[574]: 
matrix([[matrix([[0, 1], 
     [2, 3]]), matrix([[0, 1], 
     [2, 3]])], 
     [matrix([[0, 1], 
     [2, 3]]), matrix([[0, 1], 
     [2, 3]])]], dtype=object) 

Я не знать, имеет ли xm какие-либо полезные вычислительные свойства.

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