2016-08-22 2 views
0

저는 독자적으로 파이썬을 연구 중이며 행렬을 만들고 싶습니다. 인터넷에서 읽고 난 매트릭스를 정의하는 여러 가지 방법을 발견하고 나는이 두 방법을 선택하기로 결정했다 : 나는 매트릭스를 구성 할 수 있어요 두 경우 모두파이썬에서 행렬에서 열 배열을 선택하는 방법

import numpy as np 

# Method 1 
w, h = 5, 5 
M = [[0 for x in range(w)] for y in range(h)] 
M[1][2] = 100 # ok 
m = M[:,2] # <----- Why is it not possible? 

# Method 2 
A = np.zeros((5, 5)) 
A[1][2] = 100 # ok 
a = A[:,2] # <----- Why is it possible? 

을하지만 배열을 정의 할 때 문제가 발생 행렬 자체의 한 열을 선택하여. 두 번째 경우에는 a을 정의 할 수 있지만 m에 대해서는 동일한 작업을 수행 할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

M에서 열을 추출하려면 어떻게해야합니까?

나는 M과 A가 같은 유형의 변수는 아니지만 솔직히 차이점을 이해하지 못해서 어떻게 진행해야할지 모르겠다 고 생각합니다. 당신은 또한 자신을 발견으로

<class 'list'> # M 
<class 'numpy.ndarray'> # A 
+1

M에서 열을 추출하려면 'm = [M의 하위에 대해 sub [2]'를 사용합니다. ' –

+1

Numpy는 이러한 종류의 색인 생성을 지원하는 라이브러리입니다. 파이썬리스트는 그렇지 않다. 'M = np.array (M)'을 사용하여리스트를 numpy 배열로 변환 할 수 있으며 두 번째 방법을 사용할 수 있습니다. – ayhan

+0

좋아, 고맙다는, 그 문제를 해결 –

답변

1

AM는 매우 다른 개체입니다. 그들은 동일한 정보를 저장할 수 있지만, 다르게 수행하고 다른 방식으로 조작 할 수 있습니다. 그들은 서로 다른 인터페이스를 가지고 있습니다. 즉, 서로 다르게 상호 작용해야합니다. 이는 사용자가 수행 할 수있는 조작에 영향을줍니다.

M은 목록의 목록입니다. 여기에는 정수의 목록 인 여러 요소가 포함되어 있습니다. M은 매트릭스가 아니라을 알고 있습니다. 은 고정 된 수의 요소를 포함하고 있음을으로 알고 있습니다. M[i]을 사용하여 개별 목록을 가져올 수 있지만 실제 행렬 요소를 얻으려면 얻은 목록을 사용해야합니다. 참고로 M.append('abc')을 수행 할 수 있으며, 그 후에는 M이 매트릭스가되는 것을 중지합니다. 실제로 M을 행렬로 사용하려면 col = [row[i] for row in M]을 사용하여 열을 얻는 등의 방법으로 사용해야합니다. 행렬식을 계산하기 위해서는 다소 고통 스러울 것입니다.

A은 매트릭스이므로 전체 내용을 검사 할 수 있으며 단일 열을 포함하여 원하는 모든 요소를 ​​가져올 수 있습니다. 하나의 요소를 추가하는 것은 불가능합니다. NumPy 라이브러리 전체를 사용하여 np.det(A)의 계산식과 같은 행렬로 연산을 수행 할 수 있습니다.

+0

"목록"일종의 "셀"과 같은 matlab에 있나요? –

+1

예, list는 모든 요소가 모든 유형이 될 수 있으므로 matlab의 1D 셀 배열과 같습니다. –

관련 문제