import numpy as np
array1 = np.array([2, 3, 5, 7, 11, 13, 17 ,19 , 23, 29, 31])

 

array1 요소가 4보다 크면 True

array1 > 4
array([False, False,  True,  True,  True,  True,  True,  True,  True,
        True,  True])

 

array1 요소가 2로 나누었을때 나머지가 0이면 True

array1 % 2 == 0
array([ True, False, False, False, False, False, False, False, False,
       False, False])

 

where

np.where

np.where 함수는 조건을 만족하는 요소의 인덱스를 반환합니다.

 

True값 인덱스 찾기

np.where(condition)

booleans = np.array([True, True, False, True, False, True])
np.where(booleans) #(array([0, 1, 3, 5]), )

 

 

array1 > 4
array([False, False,  True,  True,  True,  True,  True,  True,  True,  True,  True])

 

4보다 큰 값이 있는 인덱스만 가져오기

np.where(array1 > 4)
(array([ 2,  3,  4,  5,  6,  7,  8,  9, 10]),)

 

 

filter

파이썬에서 filter가 이미 내장 함수로 정의되어 있다는 의미는, 파이썬이 기본적으로 제공하는 표준 라이브러리에 filter라는 이름의 함수가 포함되어 있다는 것입니다. 이 내장 함수는 주어진 조건을 만족하는 요소들을 걸러내기 위해 사용됩니다.

 

파이썬 내장 함수 'filter'

filter(function, iterable)

 

파이썬 내장 함수 filter는 두 개의 인수를 받습니다:

  • function: 각 요소에 대해 참(True) 또는 거짓(False)을 반환하는 함수.
  • iterable: 리스트, 튜플, 문자열 등 반복 가능한 객체.

filter 함수는 반복 가능한 객체의 각 요소에 대해 주어진 함수를 적용하여 참을 반환하는 요소들만 걸러낸 새로운 반복자를 반환합니다.

 

# 짝수를 필터링하는 함수
def is_even(num):
    return num % 2 == 0

# 리스트에서 짝수만 필터링
numbers = [1, 2, 3, 4, 5, 6]
filtered_numbers = filter(is_even, numbers)

print(list(filtered_numbers))  # 출력: [2, 4, 6]

 

변수 이름으로 filter 사용하지 않기

파이썬 내장 함수의 이름을 변수 이름으로 사용하는 것은 권장되지 않습니다.

내장 함수 이름을 변수 이름으로 사용하면 그 함수에 접근할 수 없게 되며, 코드의 가독성을 떨어뜨릴 수 있습니다.

 

array1 = np.array([1, 2, 3, 4, 5, 6])

# array1의 요소 중 4보다 큰 요소의 인덱스를 찾음
filter_indices = np.where(array1 > 4)

print(filter_indices)  # 출력: (array([4, 5]),)

여기서 filter_indicesarray1의 요소 중 4보다 큰 값(즉, 5와 6)의 인덱스를 포함하는 배열을 반환합니다. np.where는 조건을 만족하는 인덱스를 반환하므로, 이를 활용하여 조건을 만족하는 요소를 선택할 수 있습니다.

'데이터 분석 > numpy' 카테고리의 다른 글

5. numpy 기본 통계  (0) 2024.06.03
3. numpy 기본 연산  (0) 2024.06.03
2. 인덱싱 슬라이싱  (0) 2024.06.03
1. array 생성하기 및 모듈 별명 지어주기  (0) 2024.06.03
import numpy as np
array1 = np.arange(10)
array2 = np.arange(10, 20)
array1 #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array2 #array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

 

 

모든 값에 2곱하기

array1 * 2 #array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

 

모든 값에 2나누기

array1 / 2 #array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

 

모든 값에 2 더하기

array1 + 2 #array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

 

모든 값에 제곱하기

array1 ** 2 #array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])

 

변수에 지정해야 연산이 저장된다.

array1 = array1 * 2
array1 #array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

 

array1 = np.arange(10)
array2 = np.arange(10, 20)
array1 + array2 #array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
array1 * array2 #array([0, 11, 24, 39, 56, 75, 96, 119, 144, 171])
array1 / array2

'데이터 분석 > numpy' 카테고리의 다른 글

5. numpy 기본 통계  (0) 2024.06.03
4. numpy 불린 연산  (1) 2024.06.03
2. 인덱싱 슬라이싱  (0) 2024.06.03
1. array 생성하기 및 모듈 별명 지어주기  (0) 2024.06.03
import numpy as np
array1 = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])

 

array1[0] #0
array1[2] #2
array1[-1] #15
array1[-2] #14

 

1, 3, 4번 인덱스만 가져오기

array1[[1, 3, 4]] # 1번, 3번, 4번 인덱스만 가져옴

 

 

array2 생성

array2 = np.array([2, 1, 3])

 

array1을 array2로 인덱싱하기

array1[array2] # 2번, 1번 3번 인덱스만 가져옴
array1[2:7] # 2번, 7(7-1)번 인덱스 전까지 가져옴
array1[0:7] # 0부터 7(7-1)번 인덱스 전까지 가져옴
array1[:7] # 0부터 7 (7-1)번 인덱스까지 가져옴
array1[2:] #2번 인덱스부터 끝까지 가져옴
array1[2:11:2] # 2번 인덱스부터 10까지 2씩 증가하며 가져옴 2, 4, 6, 8, 10

'데이터 분석 > numpy' 카테고리의 다른 글

5. numpy 기본 통계  (0) 2024.06.03
4. numpy 불린 연산  (1) 2024.06.03
3. numpy 기본 연산  (0) 2024.06.03
1. array 생성하기 및 모듈 별명 지어주기  (0) 2024.06.03

Numpy

 

1. 목적 및 사용 용도

Numpy는 파이썬에서 데이터 처리를 위해 널리 사용되는 라이브러리

 

목적 : 주로 수치 연산과 과학적 계산을 위한 라이브러리

사용 용도 : 고성능 다차원 배열 객체인 'ndarray'를 사용하여 벡터화된 수치 연산을 수행. 주로 행렬연산, 선형대수, 통계, 수학적 함수 등에서 사용된다.

구조 : 넘파이 배열은 동일한 데이터 타입을 가지며, 다차원 배열을 효율적으로 처리할 수 있다.

 

2. 주요 데이터 구조

  • ndarray: N차원 배열 객체로, 동종 데이터(모든 요소가 같은 데이터 타입)를 저장합니다. 고성능 수치 연산을 위한 다양한 함수와 메서드를 제공합니다.

3. 데이터 조작 및 기능

  • 주로 수학적 연산에 중점을 둡니다. 배열 간의 연산, 선형 대수 연산, Fourier 변환 등 고성능 수치 연산을 지원합니다.
  • 브로드캐스팅 기능을 통해 배열 간의 연산을 효율적으로 수행할 수 있습니다.

4. 성능

  • 메모리 효율성과 연산 속도 면에서 매우 우수합니다. 대규모 수치 연산에 적합합니다.
  • 벡터화된 연산을 통해 반복문을 최소화하고 빠른 계산을 수행합니다.

 

요약

  • 넘파이는 주로 수치 연산 및 과학적 계산에 사용됩니다.
  • 넘파이는 동일한 데이터 타입의 다차원 배열을 처리하는 데 강점

 

import numpy

 

 

- 파이썬 리스트를 통해 생성

numpy 모듈의 array 메소드에 파라미터로 파이썬 리스트를 넘겨주면 numpy array가 리턴됩니다.

 

1차원 array생성

array1 = numpy.array([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31])
print(array1) # [ 2  3  5  7 11 13 17 19 23 29 31]

 

타입 확인

print(type(array1)) # <class 'numpy.ndarray'>
<class 'numpy.ndarray'>

 

요소 확인

print(array1.shape) # (11,) 11개의 요소가 있다.

 

 

 

2차원 array 생성

array2 = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(array2)
print(array2.shape) # (3, 4) 행:3 열:4
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
(3, 4)

 

 

요소의 개수 출력

print(array1.size) # 11
print(array2.size) # 12

 

 

 

균일한 값으로 array생성

numpy.full(생성할 개수, 입력할 값)

array1 = numpy.full(6, 7)

print(array1) # [7 7 7 7 7 7]

 

 

 

모든 값이 0인 numpy array 생성

numpy.zeros(6, dtype=int)

array1 = numpy.full(6, 0)
array2 = numpy.zeros(6, dtype=int)

print(array1)
print()
print(array2)
[0 0 0 0 0 0]

[0 0 0 0 0 0]

 

모든 값이 1인 numpy array 생성

numpy.ones(6, dtype=int)

array1 = numpy.full(6, 1)
array2 = numpy.ones(6, dtype=int)

print(array1)
print()
print(array2)
[1 1 1 1 1 1]

[1 1 1 1 1 1]

 

랜덤한 값들로 생성

array1 = numpy.random.random(6)
array2 = numpy.random.random(6)

print(array1)
print()
print(array2)
[0.03324978 0.12104063 0.59124917 0.40598322 0.51654182 0.18895607]

[0.89759737 0.35333745 0.53036455 0.61011018 0.39151271 0.78917448]

 

 

 

연속된 값들이 담긴 numpy array생성

# 파라미터 1개
array1 = numpy.arange(6)
print(array1) # [0 1 2 3 4 5]


# 파라미터 2개
array1 = numpy.arange(2, 7)
print(array1) # [2 3 4 5 6]

# 파라미터 3개
# arange(n, m, s)를 하면 n부터 m-1까지의 값들 중 간격이 s인 값들이 담긴 numpy array가 리턴됩니다.
array1 = numpy.arange(3, 17, 3)
print(array1) #  [3  6  9 12 15]

 

모듈 별명 지어주기

as 뒤에 별명을 지어준다.


- 넘파이(Numpy)의 모듈 별명은 주로 np입니다. 이는 관습적으로 사용되는 별명

import numpy as np

array1 = np.full(6,0)
array2 = np.zeros(6)
array3 = np.full(6,6)
array4 = np.ones(9)
array5 = np.random.random(6)
array6 = np.random.random(10)

'데이터 분석 > numpy' 카테고리의 다른 글

5. numpy 기본 통계  (0) 2024.06.03
4. numpy 불린 연산  (1) 2024.06.03
3. numpy 기본 연산  (0) 2024.06.03
2. 인덱싱 슬라이싱  (0) 2024.06.03