English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 기본 튜토리얼

Python 흐름 제어

Python 함수

Python 데이터 타입

Python 파일操作

Python 객체와 클래스

Python 날짜와 시간

Python 고급 지식

Python 참조 매뉴얼

파이썬 행렬과 NumPy 배열

이 문서에서는 내장 목록과 NumPy 패키지를 사용하여 Python 행렬을 배우겠습니다.

행렬은 숫자가 행과 열에 따라 정렬된 두차원 데이터 구조입니다. 예를 들어:

이 행렬은3x4("세 곱 네")행렬, 그러나 그것이3행4열.

Python 행렬

Python은 행렬의 내장 타입이 없습니다. 그러나 목록의 목록을 행렬로 볼 수 있습니다. 예를 들어:

A = [[1, 4, 5], 
    [-5, 8, 9]]

이 목록의 목록을 행렬로 볼 수 있습니다.2행3행렬의 열.

이 문서를 계속하기 전에 꼭 이해해야 할 내용이 있습니다.Python 목록

嵌套列表의 사용법을 보겠습니다.

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A =", A) 
print("A[1], A[1])      # 두 번째 행
print("A[1][2], A[1][2])   # 두 번째 행의 세 번째 요소
print("A[0][-1] =", A[0][-1])   # 첫 번째 행의 마지막 요소
column = [];        # 공란 list
for row in A:
  column.append(row[2])   
print("3rd column = "column"}

프로그램을 실행할 때, 출력은 다음과 같을 것입니다:

A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]
A[1] = [-5, 8, 9, 0]
A[1][2]= 9
A[0][-1]= 12
3rd column = [5, 9, 11]

Python의 둥근 목록을 사용한 행렬과 관련된 몇 가지 예제가 있습니다.

둥근 목록을 사용하여 행렬을 사용할 수 있지만,NumPyPython에서는 패키지를 사용하여 행렬을 처리하는 것이 더 나은 방법입니다.

NumPy 배열

NumPy는 과학 계산을 위한 소프트웨어 패키지로, 강력한 N차원 배열 객체를 지원합니다. NumPy를 사용하기 전에 설치해야 합니다. 더 많은 정보는,

NumPy를 설치한 후에는 그를 임포트하고 사용할 수 있습니다.

NumPy는 여러 차원 배열을 제공합니다(실제로는 객체입니다). 예를 들어:

import numpy as np
a = np.array([1, 2, 3])
print(a)    # 출력: [1, 2, 3]
print(type(a))    # 출력: <class 'numpy.ndarray'>

과 같이 NumPy의 배열 클래스는 ndarray라고 합니다.

NumPy 배열을 어떻게 생성할 수 있습니까?

NumPy 배열을 생성하는 방법이 몇 가지 있습니다.

1. 정수, 실수와 복수 배열

import numpy as np
A = np.array([1, 2, 3], [3, 4, 5]]
print(A)
A = np.array([1.1, 2, 3], [3, 4, 5])  # 실수 배열
print(A)
A = np.array([1, 2, 3], [3, 4, 5], dtype = complex)  # 복수 배열
print(A)

프로그램을 실행할 때, 출력은 다음과 같습니다:

[[1 2 3]
 [3 4 5]]
[[1.1 2.  3. ]]
 [3.  4.  5. ]]
[[1.+0.j 2.+0.j 3.+0.j]
 [3.+0.j 4.+0.j 5.+0.j]]

2. 0과 1의 배열

import numpy as np
zeors_array = np.zeros((2, 3) )
print(zeors_array)
'''
 출력:
 [[0. 0. 0.]
  [0. 0. 0.]]
'''
ones_array = np.ones((1, 5), dtype=np.int32  // dtype
print(ones_array)    # 출력: [[1 1 1 1 1]]

여기서, dtype를 지정했습니다32비트4바이트). 따라서, 이 배열은 특정 범위의 값을 사용할 수 있습니다.-2-312-31-1

3. 사용할 수 있는 arange()와 shape()

import numpy as np
4
print('A =
B = np.arange(12).reshape(2, 6
print('B =
''' 
출력:
A = [0 1 2 3]
B = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
'''

에 대해 알아보세요NumPy 배열을 생성하는 방법다른 메서드에 대한 더 많은 정보를 제공했습니다.

행렬 연산

위에서, 우리는3예제: 두 행렬의 덧셈, 두 행렬의 곱셈 및 행렬 전치. 이 프로그램을 작성하기 전에는 내장 목록을 사용했습니다. NumPy 배열을 사용하여 동일한 작업을 수행하는 방법을 보겠습니다.

두 행렬의 덧셈

우리는 다음을 사용합니다+연산자는 두 NumPy 행렬의 대응 요소를 더합니다.

import numpy as np
A = np.array([2, 4], [5, -6]]
B = np.array([9, -3], [3, 6]]
C = A + B # 요소의 지혜로운 추가
print(C)
''' 
출력:
[[11  1]
 [ 8  0]]
 '''

두 행렬 곱셈

두 행렬을 곱하기 위해 dot() 메서드를 사용합니다. 두 행렬 곱셈에 대한 정보를 이해하십시오.numpy.dot작동 방식에 대한 더 많은 정보

주의: *수组分할(두 수组的 대응 요소의 곱)에 사용되며, 행렬 곱셈이 아닙니다.

import numpy as np
A = np.array([3, 6, 7], [5, -3, 0]])
B = np.array([1, 1], [2, 1], [3, -3]]
C = A.dot(B)
print(C)
''' 
출력:
[[ 36 -12]
 [ -1   2]]
'''

행렬 전치

우리는 다음을 사용합니다numpy.transpose행렬의 전치 계산

import numpy as np
A = np.array([1, 1], [2, 1], [3, -3]]
print(A.transpose())
''' 
출력:
[[ 1  2  3]
 [ 1  1 -3]]
'''

처음 보셨듯, NumPy는 작업을 더 쉽게 만듭니다.

행렬 요소, 행과 열 접근

행렬 요소 접근

리스트와 유사하게, 행렬 요소에 인덱싱을 사용하여 접근할 수 있습니다. 일차원 NumPy 배열부터 시작해 보겠습니다.

import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0]) # 첫 번째 요소     
print("A[2], A[2]) # 세 번째 요소 
print("A[-1], A[-1]) # 마지막 요소

프로그램을 실행할 때, 출력은 다음과 같습니다:

A[0] = 2
A[2]= 6
A[-1]= 10

이제, 두차원 배열(기본적으로 행렬)의 요소에 접근하는 방법을 보겠습니다.

import numpy as np
A = np.array([1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
# 첫 번째 행의 첫 번째 요소
print("A[0][0] =", A[0][0])  
# 두 번째 행의 세 번째 요소
print("A[1][2], A[1][2])
# 마지막 행의 마지막 요소
print("A[-1][-1], A[-1][-1])

프로그램을 실행할 때, 출력은 다음과 같을 것입니다:

A[0][0] = 1
A[1][2]= 9
A[-1][-1]= 19

행렬의 행 접근

import numpy as np
A = np.array([1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A[0] =", A[0]) # 첫 번째 행
print("A[2], A[2]) # 세 번째 행
print("A[-1], A[-1]) # 마지막 행 (3rd row in this case)

프로그램을 실행할 때, 출력은 다음과 같을 것입니다:

A[0] = [1, 4, 5, 12]
A[2] = [-6, 7, 11, 19]
A[-1] = [-6, 7, 11, 19]

행렬의 열 접근

import numpy as np
A = np.array([1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A[:,0] =", A[:,0]) # 첫 번째 열
print("A[:,3], A[:,3]) # 네 번째 열
print("A[:,-1], A[:,-1]) # 마지막 열(4th 열

프로그램을 실행할 때, 출력은 다음과 같을 것입니다:

A[:,0] = [ 1 -5 -6]
A[:,3] = [12  0 19]
A[:,-1] = [12  0 19]

위 코드가 어떻게 작동하는지 모르면, 이 문서의 행렬 부분의 슬라이싱을 읽어보세요.

행렬 슬라이싱

일维 NumPy 배열의 슬라이싱은 리스트와 유사합니다. 리스트 슬라이싱의 작동 방식을 알지 못하면, 다음을 방문하세요파이썬의 슬라이싱 기호 이해하기

예를 들어:

import numpy as np
letters = np.array([1, 3, 5, 7, 9, 7, 5])
# 3rd부터 5th요소
print(letters[2:5])        # 출력: [5, 7, 9]
# 1st부터 4th요소
print(letters[:-5])        # 출력: [1, 3]   
# 6th부터 마지막 요소까지
print(letters[5:])         # 출력:[7, 5]
# 1st부터 마지막 요소까지
print(letters[:])          # 출력:[1, 3, 5, 7, 9, 7, 5]
# 목록을 뒤집기
print(letters[::-1)]          # 출력:[5, 7, 9, 7, 5, 3, 1]

이제, 행렬을 캔버스하는 방법을 보여드리겠습니다.

import numpy as np
A = np.array([1, 4, 5, 12, 14], 
    [-5, 8, 9, 0, 17],
    [-6, 7, 11, 19, 21]]
print(A[:2, :4)]  # 두 행, 네 열
'''출력:
[[ 1  4  5 12]
 [-5  8  9  0]]
'''
print(A[:1,])  # 첫 번째 행, 모든 열
'''출력:
[[ 1  4  5 12 14]]
'''
print(A[:,2)]  # 모든 행, 두 번째 열
'''출력:
[ 5  9 11]
'''
print(A[:, 2:5)]  # 모든 행, 세 번째부터 다섯 번째 열
'''출력:
[[ 5 12 14]
 [ 9  0 17]
 [11 19 21]]
'''

그러나 볼 수 있듯이 NumPy(또는 중첩된 리스트 대신)를 사용하면 행렬을 더 쉽게 처리할 수 있으며, 기본적인 지식에 대해 다루지 않았습니다. 데이터 과학에서 Python을 사용하려는 경우 NumPy 소프트웨어 패키지를 자세히 연구하는 것을 추천합니다./분석 시.

NumPy 자원, 도움이 될 수 있습니다: