Gilt für Studenten Folgt unserem Link, um das Angebot kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
Deal anzeigenGilt auf Haarpflege Folgt unserem Link, um die Angebote kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
Deal anzeigenBei Erreichen des Mindestbestellwertes entfallen die Versandkosten automatisch Es ist kein Gutscheincode erforderlich
19 Euro Mindestbestellwert
Gilt im Sale Folgt unserem Link, um die Angebote kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
Deal anzeigenGilt auf die Versandkosten Folgt unserem Link, um die Angebote kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
25 Euro Mindestbestellwert
Gilt auf Make-Up Essentials Folgt unserem Link, um das Angebot kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
Deal anzeigenGilt für Freundschaftswerbung Folgt unserem Link, um das Angebot kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
Deal anzeigenGilt auf Sonnenschutz & Bräune
Deal anzeigenGilt auf Hugo Boss Aktionsprodukte
Deal anzeigenGilt auf das Dermalogica Aktionssortiment
Deal anzeigenGilt auf Aktionsprodukte von La Roche Posay
Deal anzeigenGilt auf ausgewählte Marken
Deal anzeigenGilt auf ausgewählte Artikel Folgt unserem Link, um das Angebot kennenzulernen. Weitere Infos auf der Aktionsseite. Einen Gutscheincode benötigt ihr nicht.
Deal anzeigenGilt auf Isadora Aktionsprodukte
Gilt auf Hawaiian Tropic
Gilt auf Produkte von L'Occitane # 3.1.1. NumPy NumPy는 Numerical Python의 약자로 과학 계산을 위한 파이썬 패키지입니다. NumPy는 고성능의 다차원 배열 객체와 이를 다룰 수 있는 도구를 제공합니다. NumPy 배열은 리스트와 비슷하지만, 모든 원소가 동일한 자료형이어야 하며, 벡터와 행렬 연산에서 매우 빠른 연산 속도를 보장합니다. NumPy는 데이터 구조 외에도 선형대수, 푸리에 변환, 난수 생성기 등과 같은 수치 연산을 위한 유용한 기능을 제공합니다. NumPy는 데이터 분석, 머신러닝, 딥러닝 등에서 기본적으로 사용되는 패키지입니다. NumPy의 핵심 기능인 ndarray는 대용량 데이터의 빠른 처리를 지원하며, Pandas, Matplotlib, Scikit-learn 등 다른 데이터 분석 패키지들의 기반이 됩니다. NumPy는 일반적으로 다음과 같은 import 문을 사용하여 불러옵니다. python import numpy as np NumPy의 가장 기본적인 객체는 ndarray입니다. ndarray는 NumPy의 N-dimensional array의 약자로 다차원 배열을 의미합니다. ndarray는 동일한 타입의 데이터만을 저장할 수 있으며, 파이썬의 리스트보다 빠르고 메모리를 효율적으로 사용합니다. 다음은 NumPy 배열을 생성하는 예제입니다. python import numpy as np # 1차원 배열 생성 a = np.array([1, 2, 3]) print(a) # 출력: [1 2 3] # 2차원 배열 생성 b = np.array([[1, 2, 3], [4, 5, 6]]) print(b) # 출력: # [[1 2 3] # [4 5 6]] NumPy 배열의 속성에는 shape, dtype, ndim 등이 있습니다. * shape: 배열의 각 차원의 크기를 튜플로 반환합니다. * dtype: 배열 요소의 데이터 타입을 반환합니다. * ndim: 배열의 차원 수를 반환합니다. python import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) print(a.shape) # 출력: (2, 3) print(a.dtype) # 출력: int64 print(a.ndim) # 출력: 2 NumPy는 배열을 생성하는 다양한 함수를 제공합니다. * np.zeros: 모든 요소가 0인 배열을 생성합니다. * np.ones: 모든 요소가 1인 배열을 생성합니다. * np.arange: 범위 내의 값들을 가진 배열을 생성합니다. * np.linspace: 선형 간격으로 배열을 생성합니다. * np.random.random: 난수로 채워진 배열을 생성합니다. python import numpy as np # 모든 요소가 0인 2x3 배열 생성 a = np.zeros((2, 3)) print(a) # 출력: # [[0. 0. 0.] # [0. 0. 0.]] # 모든 요소가 1인 2x3 배열 생성 b = np.ones((2, 3)) print(b) # 출력: # [[1. 1. 1.] # [1. 1. 1.]] # 0부터 9까지의 정수로 이루어진 배열 생성 c = np.arange(10) print(c) # 출력: [0 1 2 3 4 5 6 7 8 9] # 0부터 1까지 5개의 요소로 이루어진 배열 생성 d = np.linspace(0, 1, 5) print(d) # 출력: [0. 0.25 0.5 0.75 1. ] # 난수로 채워진 2x2 배열 생성 e = np.random.random((2, 2)) print(e) # 출력 (예시): # [[0.5488135 0.71518937] # [0.60276338 0.54488318]] NumPy 배열은 인덱싱과 슬라이싱이 가능합니다. 파이썬 리스트와 유사하지만, 다차원 배열의 경우 콤마(,)를 사용하여 각 차원을 구분합니다. python import numpy as np a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 인덱싱 print(a[0, 1]) # 출력: 2 # 슬라이싱 print(a[0:2, 1:3]) # 출력: # [[2 3] # [5 6]] NumPy는 배열 간의 다양한 수학적 연산을 지원합니다. 기본적인 사칙연산부터 통계 함수, 선형대수 연산 등이 가능합니다. python import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 요소별 덧셈 print(a + b) # 출력: [5 7 9] # 요소별 곱셈 print(a * b) # 출력: [ 4 10 18] # 행렬 곱셈 print(np.dot(a, b)) # 출력: 32 # 통계 함수 print(np.mean(a)) # 출력: 2.0 print(np.max(b)) # 출력: 6 NumPy는 브로드캐스팅(Broadcasting)이라는 기능을 제공합니다. 브로드캐스팅은 서로 다른 크기의 배열 간에도 연산을 가능하게 해주는 기능입니다. python import numpy as np a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.array([1, 0, 1]) # 브로드캐스팅을 이용한 연산 print(a + b) # 출력: # [[ 2 2 4] # [ 5 5 7] # [ 8 8 10]] NumPy는 배열의 형태를 변경하는 다양한 함수를 제공합니다. * reshape: 배열의 형태를 변경합니다. * ravel: 배열을 1차원으로 평탄화합니다. * transpose: 배열의 축을 바꿉니다. python import numpy as np a = np.arange(6).reshape(2, 3) print(a) # 출력: # [[0 1 2] # [3 4 5]] b = a.reshape(3, 2) print(b) # 출력: # [[0 1] # [2 3] # [4 5]] c = a.ravel() print(c) # 출력: [0 1 2 3 4 5] d = a.transpose() print(d) # 출력: # [[0 3] # [1 4] # [2 5]] NumPy는 배열의 결합과 분할을 위한 함수도 제공합니다. * np.concatenate: 배열을 결합합니다. * np.split: 배열을 분할합니다. * np.hstack: 배열을 수평으로 결합합니다. * np.vstack: 배열을 수직으로 결합합니다. python import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) # 수직 결합 c = np.vstack((a, b)) print(c) # 출력: # [[1 2] # [3 4] # [5 6]] # 수평 결합 d = np.array([[7], [8]]) e = np.hstack((a, d)) print(e) # 출력: # [[1 2 7] # [3 4 8]] NumPy는 배열의 정렬과 검색을 위한 함수도 제공합니다. * np.sort: 배열을 정렬합니다. * np.argsort: 정렬된 배열의 인덱스를 반환합니다. * np.where: 조건에 맞는 요소의 인덱스를 반환합니다. python import numpy as np a = np.array([3, 1, 2]) # 정렬 b = np.sort(a) print(b) # 출력: [1 2 3] # 정렬된 배열의 인덱스 c = np.argsort(a) print(c) # 출력: [1 2 0] # 조건에 맞는 요소의 인덱스 d = np.where(a > 1) print(d) # 출력: (array([0, 2]),) NumPy는 파일 입출력 기능도 제공합니다. 배열을 파일로 저장하거나 파일에서 배열을 불러올 수 있습니다. * np.save: 배열을 바이너리 파일로 저장합니다. * np.load: 바이너리 파일에서 배열을 불러옵니다. * np.savetxt: 배열을 텍스트 파일로 저장합니다. * np.loadtxt: 텍스트 파일에서 배열을 불러옵니다. python import numpy as np a = np.array([1, 2, 3]) # 바이너리 파일로 저장 및 불러오기 np.save('array.npy', a) b = np.load('array.npy') print(b) # 출력: [1 2 3] # 텍스트 파일로 저장 및 불러오기 np.savetxt('array.txt', a) c = np.loadtxt('array.txt') print(c) # 출력: [1. 2. 3.] NumPy는 선형대수 연산을 위한 다양한 함수를 제공합니다. * np.dot: 점곱을 계산합니다. * np.linalg.inv: 역행렬을 계산합니다. * np.linalg.det: 행렬식을 계산합니다. * np.linalg.eig: 고유값과 고유벡터를 계산합니다. python import numpy as np a = np.array([[1, 2], [3, 4]]) # 역행렬 b = np.linalg.inv(a) print(b) # 출력: # [[-2. 1. ] # [ 1.5 -0.5]] # 행렬식 c = np.linalg.det(a) print(c) # 출력: -2.0000000000000004 # 고유값과 고유벡터 d, e = np.linalg.eig(a) print(d) # 출력: [-0.37228132 5.37228132] print(e) # 출력: # [[-0.82456484 -0.41597356] # [ 0.56576746 -0.90937671]] NumPy는 난수 생성 기능도 제공합니다. np.random 모듈을 사용하여 다양한 분포에서 난수를 생성할 수 있습니다. * np.random.rand: 균등 분포에서 난수를 생성합니다. * np.random.randn: 표준 정규 분포에서 난수를 생성합니다. * np.random.randint: 정수 난수를 생성합니다. * np.random.shuffle: 배열을 무작위로 섞습니다. * np.random.seed: 난수 생성 시드를 설정합니다. python import numpy as np # 시드 설정 np.random.seed(0) # 균등 분포에서 난수 생성 a = np.random.rand(2, 2) print(a) # 출력: # [[0.5488135 0.71518937] # [0.60276338 0.54488318]] # 표준 정규 분포에서 난수 생성 b = np.random.randn(2, 2) print(b) # 출력 (예시): # [[ 1.76405235 0.40015721] # [ 0.97873798 2.2408932 ]] # 정수 난수 생성 c = np.random.randint(0, 10, (2, 2)) print(c) # 출력 (예시): # [[5 0] # [3 3]] # 배열 섞기 d = np.arange(10) np.random.shuffle(d) print(d) # 출력 (예시): [2 8 4 9 1 6 7 3 0 5] NumPy는 벡터화 연산을 지원하여 반복문 없이 배열 전체에 대한 연산을 빠르게 수행할 수 있습니다. 이는 NumPy의 가장 큰 장점 중 하나입니다. python import numpy as np a = np.array([1, 2, 3, 4, 5]) # 벡터화 연산 b = a * 2 print(b) # 출력: [ 2 4 6 8 10] # 비교 연산 c = a > 3 print(c) # 출력: [False False False True True] NumPy는 마스킹 연산도 지원합니다. 불리언 배열을 사용하여 조건에 맞는 요소만 선택할 수 있습니다. python import numpy as np a = np.array([1, 2, 3, 4, 5]) # 마스킹 연산 mask = (a > 2) & (a < 5) b = a[mask] print(b) # 출력: [3 4] NumPy는 유니버설 함수(ufunc)를 제공합니다. ufunc는 배열의 각 요소에 대해 빠르게 연산을 수행하는 함수입니다. * np.sqrt: 제곱근을 계산합니다. * np.exp: 지수 함수를 계산합니다. * np.sin: 사인 함수를 계산합니다. * np.log: 로그 함수를 계산합니다. python import numpy as np a = np.array([1, 4, 9]) # 유니버설 함수 b = np.sqrt(a) print(b) # 출력: [1. 2. 3.] c = np.exp(a) print(c) # 출력: [2.71828183e+00 5.45981500e+01 8.10308393e+03] NumPy는 다차원 배열을 효율적으로 처리할 수 있도록 다양한 인덱싱 방법을 제공합니다. * 정수 배열 인덱싱 * 불리언 배열 인덱싱 python import numpy as np a = np.array([[1, 2], [3, 4], [5, 6]]) # 정수 배열 인덱싱 b = a[[0, 1, 2], [0, 1, 0]] print(b) # 출력: [1 4 5] # 불리언 배열 인덱싱 bool_idx = (a > 2) print(bool_idx) # 출력: # [[False False] # [ True True] # [ True True]] c = a[bool_idx] print(c) # 출력: [3 4 5 6] NumPy는 배열의 복사와 뷰를 생성하는 방법을 제공합니다. 복사는 원본 배열과 별개의 메모리를 사용하며, 뷰는 원본 배열과 같은 메모리를 참조합니다. python import numpy as np a = np.array([1, 2, 3]) # 복사 b = a.copy() b[0] = 10 print(a) # 출력: [1 2 3] print(b) # 출력: [10 2 3] # 뷰 c = a.view() c[0] = 10 print(a) # 출력: [10 2 3] print(c) # 출력: [10 2 3] NumPy는 배열의 메모리 레이아웃을 최적화하기 위해 스트라이드(strides) 개념을 사용합니다. 스트라이드는 각 차원에서 다음 요소로 이동하기 위해 건너뛰어야 하는 바이트 수를 나타냅니다. python import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32) print(a.strides) # 출력: (12, 4) NumPy는 구조화된 배열을 지원합니다. 구조화된 배열은 다른 데이터 타입을 가진 여러 필드로 구성된 배열입니다. python import numpy as np # 구조화된 배열 생성 data = np.array([('Alice', 25, 55.0), ('Bob', 30, 75.5)], dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4')]) print(data['name']) # 출력: ['Alice' 'Bob'] print(data['age']) # 출력: [25 30] NumPy는 메모리 매핑된 배열을 지원합니다. 메모리 매핑된 배열은 디스크의 파일을 직접 메모리에 매핑하여 대용량 데이터를 효율적으로 처리할 수 있게 해줍니다. python import numpy as np # 메모리 매핑된 배열 생성 a = np.memmap('memmap.dat', dtype='float32', mode='w+', shape=(3, 3)) a[:] = np.random.random((3, 3)) print(a) # 출력 (예시): # [[0.5488135 0.71518934 0.60276335] # [0.5448832 0.4236548 0.6458941 ] # [0.4375872 0.891773 0.96366274]] NumPy는 배열의 브로드캐스팅 규칙을 엄격히 따릅니다. 브로드캐스팅은 배열의 크기를 자동으로 확장하여 연산을 가능하게 합니다. 브로드캐스팅 규칙은 다음과 같습니다. 1. 두 배열의 차원 수가 다르면, 작은 차원의 배열의 형태 앞에 1을 추가합니다. 2. 두 배열의 크기가 같은 차원에서 일치하거나, 둘 중 하나의 크기가 1이어야 합니다. 3. 크기가 1인 차원은 다른 배열의 크기에 맞게 확장됩니다. python import numpy as np a = np.array([[1, 2, 3]]) b = np.array([[4], [5], [6]]) # 브로드캐스팅을 이용한 덧셈 c = a + b print(c) # 출력: # [[5 6 7] # [6 7 8] # [7 8 9]] NumPy는 배열의 차원을 추가하거나 제거하는 기능도 제공합니다. * np.newaxis: 새로운 축을 추가합니다. * np.squeeze: 크기가 1인 차원을 제거합니다. python import numpy as np a = np.array([1, 2, 3]) # 새로운 축 추가 b = a[np.newaxis, :] print(b.shape) # 출력: (1, 3) c = a[:, np.newaxis] print(c.shape) # 출력: (3, 1) # 크기가 1인 차원 제거 d = np.array([[[1], [2], [3]]]) e = np.squeeze(d) print(e.shape) # 출력: (3,) NumPy는 배열의 반복을 위한 다양한 방법을 제공합니다. * np.nditer: 다차원 배열 반복을 위한 반복자 객체를 생성합니다. * np.ndenumerate: 배열의 인덱스와 값을 함께 반환하는 반복자 객체를 생성합니다. python import numpy as np a = np.array([[1, 2], [3, 4]]) # nditer 사용 for x in np.nditer(a): print(x, end=' ') # 출력: 1 2 3 4 # ndenumerate 사용 for index, x in np.ndenumerate(a): print(index, x) # 출력: # (0, 0) 1 # (0, 1) 2 # (1, 0) 3 # (1, 1) 4 NumPy는 배열의 정렬과 검색을 위한 고급 기능도 제공합니다. * np.lexsort: 여러 키를 기준으로 정렬합니다. * np.partition: 배열을 분할합니다. * np.argpartition: 분할된 배열의 인덱스를 반환합니다. python import numpy as np a = np.array([3, 1, 2]) b = np.array([50, 30, 40]) # lexsort 사용 (b를 먼저 정렬한 후 a 정렬) indices = np.lexsort((a, b)) print(indices) # 출력: [1 2 0] # partition 사용 c = np.partition(a, 1) print(c) # 출력: [1 2 3] NumPy는 배열의 통계적 연산을 위한 다양한 함수를 제공합니다. * np.sum: 배열 요소의 합을 계산합니다. * np.mean: 배열 요소의 평균을 계산합니다. * np.std: 배열 요소의 표준편차를 계산합니다. * np.var: 배열 요소의 분산을 계산합니다. * np.min, np.max: 배열 요소의 최솟값과 최댓값을 찾습니다. * np.argmin, np.argmax: 최솟값과 최댓값의 인덱스를 반환합니다. * np.percentile: 배열의 백분위수를 계산합니다. * np.median: 배열의 중앙값을 계산합니다. python import numpy as np a = np.array([[1, 2], [3, 4]]) # 합계 print(np.sum(a)) # 출력: 10 print(np.sum(a, axis=0)) # 출력: [4 6] (열 합계) print(np.sum(a, axis=1)) # 출력: [3 7] (행 합계) # 평균 print(np.mean(a)) # 출력: 2.5 # 표준편차 print(np.std(a)) # 출력: 1.118033988749895 # 최댓값과 최솟값 print(np.max(a)) # 출력: 4 print(np.min(a)) # 출력: 1 # 최댓값과 최솟값의 인덱스 print(np.argmax(a)) # 출력: 3 (평탄화된 인덱스) print(np.argmin(a)) # 출력: 0 (평탄화된 인덱스) NumPy는 집합 연산을 위한 함수도 제공합니다. * np.unique: 배열에서 고유한 요소를 찾습니다. * np.intersect1d: 두 배열의 교집합을 찾습니다. * np.union1d: 두 배열의 합집합을 찾습니다. * np.in1d: 한 배열의 요소가 다른 배열에 있는지 확인합니다. * np.setdiff1d: 두 배열의 차집합을 찾습니다. * np.setxor1d: 두 배열의 대칭차를 찾습니다. python import numpy as np a = np.array([1, 2, 3, 3, 4]) b = np.array([3, 4, 5, 6]) # 고유한 요소 찾기 print(np.unique(a)) # 출력: [1 2 3 4] # 교집합 print(np.intersect1d(a, b)) # 출력: [3 4] # 합집합 print(np.union1d(a, b)) # 출력: [1 2 3 4 5 6] # 포함 여부 확인 print(np.in1d(a, b)) # 출력: [False False True True True] # 차집합 print(np.setdiff1d(a, b)) # 출력: [1 2] # 대칭차 print(np.setxor1d(a, b)) # 출력: [1 2 5 6] NumPy는 다항식 연산을 위한 함수도 제공합니다. * np.poly1d: 다항식 객체를 생성합니다. * np.polyfit: 데이터에 다항식을 피팅합니다. * np.polyval: 다항식을 계산합니다. * np.roots: 다항식의 근을 찾습니다. * np.polyder: 다항식의 도함수를 계산합니다. * np.polyint: 다항식의 부정적분을 계산합니다. python import numpy as np # 다항식 생성 (x^2 + 2x + 3) p = np.poly1d([1, 2, 3]) print(p(1)) # 출력: 6 (1 + 2 + 3) print(p.deriv()) # 출력: 2x + 2 print(p.integ()) # 출력: 0.3333x^3 + x^2 + 3x # 다항식 피팅 x = np.array([0, 1, 2, 3]) y = np.array([3, 2, 7, 12]) coefficients = np.polyfit(x, y, 2) print(coefficients) # 출력: [ 1. 2. 3.] (x^2 + 2x + 3) NumPy는 선형대수 연산을 위한 모듈인 np.linalg를 제공합니다. * np.linalg.solve: 선형 방정식 시스템을 풉니다. * np.linalg.lstsq: 최소제곱해를 계산합니다. * np.linalg.qr: QR 분해를 수행합니다. * np.linalg.svd: 특이값 분해를 수행합니다. * np.linalg.cholesky: 촐레스키 분해를 수행합니다. python import numpy as np # 선형 방정식 시스템 풀기 A = np.array([[1, 2], [3, 4]]) b = np.array([5, 6]) x = np.linalg.solve(A, b) print(x) # 출력: [-4. 4.5] # 최소제곱해 계산 A = np.array([[1, 1], [1, 2], [1, 3]]) b = np.array([1, 2, 2]) x, residuals, rank, s = np.linalg.lstsq(A, b, rcond=None) print(x) # 출력: [0.66666667 0.5 ] # QR 분해 Q, R = np.linalg.qr(A) print(Q) # 출력 (예시): # [[-0.57735027 0.70710678] # [-0.57735027 0. ] # [-0.57735027 -0.70710678]] print(R) # 출력 (예시): # [[-1.73205081 -3.46410162] # [ 0. 1.41421356]] NumPy는 푸리에 변환을 위한 모듈인 np.fft도 제공합니다. * np.fft.fft: 이산 푸리에 변환을 계산합니다. * np.fft.ifft: 역 이산 푸리에 변환을 계산합니다. * np.fft.fft2: 2차원 이산 푸리에 변환을 계산합니다. * np.fft.ifft2: 역 2차원 이산 푸리에 변환을 계산합니다. * np.fft.fftshift: 주파수 영역에서 0 주파수 성분을 중앙으로 이동합니다. python import numpy as np # 신호 생성 t = np.linspace(0, 1, 500, endpoint=False) signal = np.sin(2 * np.pi * 5 * t) + 0.5 * np.sin(2 * np.pi * 10 * t) # 푸리에 변환 fft_result = np.fft.fft(signal) frequencies = np.fft.fftfreq(len(signal), t[1] - t[0]) # 주파수 이동 fft_shifted = np.fft.fftshift(fft_result) freq_shifted = np.fft.fftshift(frequencies) NumPy는 난수 생성을 위한 모듈인 np.random을 제공합니다. 이 모듈은 다양한 확률 분포에서 난수를 생성할 수 있습니다. * np.random.normal: 정규 분포에서 난수를 생성합니다. * np.random.uniform: 균등 분포에서 난수를 생성합니다. * np.random.binomial: 이항 분포에서 난수를 생성합니다. * np.random.poisson: 포아송 분포에서 난수를 생성합니다. * np.random.exponential: 지수 분포에서 난수를 생성합니다. python import numpy as np # 정규 분포에서 난수 생성 normal_data = np.random.normal(0, 1, 1000) # 균등 분포에서 난수 생성 uniform_data = np.random.uniform(0, 1, 1000) # 이항 분포에서 난수 생성 binomial_data = np.random.binomial(10, 0.5, 1000) # 포아송 분포에서 난수 생성 poisson_data = np.random.poisson(5, 1000) # 지수 분포에서 난수 생성 exponential_data = np.random.exponential(1, 1000) NumPy는 성능 최적화를 위한 몇 가지 기술을 제공합니다. * np.einsum: 아인슈타인 표기법을 사용한 효율적인 배열 연산. * np.lib.stride_tricks.as_strided: 스트라이드를 조작하여 메모리 효율적인 뷰 생성. * np.vectorize: 파이썬 함수를 벡터화하여 NumPy 배열에 적용. python import numpy as np # 아인슈타인 표기법 a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) c = np.einsum('ij,jk->ik', a, b) print(c) # 출력: # [[19 22] # [43 50]] # 스트라이드 조작 x = np.arange(10) y = np.lib.stride_tricks.as_strided(x, shape=(8, 3), strides=(4, 4)) print(y) # 출력: # [[0 1 2] # [1 2 3] # [2 3 4] # [3 4 5] # [4 5 6] # [5 6 7] # [6 7 8] # [7 8 9]] # 함수 벡터화 def myfunc(a, b): return a + b if a > b else a - b vfunc = np.vectorize(myfunc) result = vfunc(np.array([1, 2, 3]), np.array([4, 5, 2])) print(result) # 출력: [-3 -3 5] NumPy는 다른 라이브러리와의 상호 운용성을 위해 버퍼 프로토콜을 지원합니다. 이를 통해 NumPy 배열을 다른 라이브러리와 효율적으로 공유할 수 있습니다. python import numpy as np import array # array.array와 NumPy 배열 간 변환 arr = array.array('i', [1, 2, 3, 4, 5]) np_arr = np.frombuffer(arr, dtype=np.int32) print(np_arr) # 출력: [1 2 3 4 5] # 메모리 공유 확인 arr[0] = 10 print(np_arr) # 출력: [10 2 3 4 5] NumPy는 C 확장 모듈을 작성할 때 사용할 수 있는 C API를 제공합니다. 이를 통해 C 또는 C++ 코드에서 NumPy 배열을 직접 다룰 수 있습니다. c // 예시: NumPy C API를 사용한 확장 모듈 #include
Gilt auf Lenoites Aktionssortiment
Gilt auf Produkte von IDUN Minerals
Wir schicken dir eine E-Mail, wenn es einen neuen
Lyko Gutscheincode gibt!