2016-07-12 3 views
0

행렬을 만들고 싶습니다. 행렬은 크기가 다른 행렬, 벡터 및 숫자로 구성됩니다.다른 크기의 행렬로 이루어진 행렬을 만듭니다.

A = [1 2 3 
    4 5 6 
    7 8 9] 

B = [10 11 
    12 13] 

C = [14 
    15 
    16] 

D = 17 

그리고 I 요소 파크 -, 2 × 2 행렬, K를 획득하고자 :
k_11 = A, k_12 = B, k_21 = C, k_22 = D 예를 들어, 난 다음 두 행렬, 하나의 벡터와 하나 개의 번호를 갖는다.

아이디어는 행렬의 "단순한"요소처럼 큰 행렬 K의 행렬, 벡터 또는 숫자를 선택할 수있는 가능성을 갖는 것입니다. 예 : K[0,0] = A, K[0,1] = B 등등.

우선, 행렬, 벡터 및 숫자 목록을 K.append(A) ...으로 얻을 수는 있지만, 목록을 행렬로 변환 할 수 없다는 것을 알았습니다.
둘째, numpy.bmat으로 블록 행렬을 만들려고했습니다. bmat의 문제점은 inputs 요소의 크기가 정확히 일치해야한다는 것입니다.
아이디어가 있으십니까?

감사합니다.

+1

당신은에서 객체로 작은 행렬을 배치 할 수 있습니다를 numpy 타입 배열'object' ... – Benjamin

답변

2

먼저 4 개 개체를 2D 목록에 저장 한 다음 목록을 numpy.matrix 개로 만듭니다.

K = matrix([[A, B], [C, D]) 
+0

오브젝트 매트릭스에서 행렬 연산을 할 수 없다는 등의 한계를 지적하면서 답을 완성하기 위해'object' 데이터 타입을 설명하고 싶을지도 모릅니다. – Benjamin

+0

Err, 실제로'object'의 일반적인 한계에 대해 확신하지 못합니다. 여기서, 행렬 수학은 작동하지 않을 것입니다 (요소의 모양이 다릅니다 ...). 그러나 어떤 데이터가 표시되는지에 관계없이 항상 그렇습니까? 아무것도 제안하려고하지 않고, 솔직히 모르겠습니다. – polwel

0

는 답변을 읽은 후 나는 2D 목록을 생성하지만, 목록 나는 "매트릭스"의 요소를 선택할 수 있기 때문에 내가 numpy.matrix을 사용하지 않은 나는 원한다. 여기에 답 :

>>> K = [ ] 
>>> K.append([ ]) 
>>> K.append([ ]) 
>>> K[0].append[A] 
>>> K[0].append[C] 
>>> K[1].append[B] 
>>> K[1].append[D] 

그래서, 원소 A를 선택하려면 :

>>> K[0][0] 

그리고 요소 B :

>>> K[1][0] 
+0

'K = [[A, C], [B, D]]'도 작동해야합니다. 목록 목록입니다. 목록에는 요소의 혼합이 포함될 수 있습니다 (예 : [[A], [C, B, D]], [[A, C], [B, D, 없음]]'. – hpaulj

관련 문제