드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JWT
  • AWS Lambda
  • fine tuning
  • Transfer Learning
  • 액션바
  • 서버리스
  • aws s3
  • Lambda
  • tensorflow
  • Python
  • Streamlit
  • Retrofit2
  • CNN
  • 네이버 API
  • serverless
  • AWS
  • 안드로이드 스튜디오
  • EC2
  • volley
  • API
  • Callback
  • github
  • Ann
  • 딥러닝
  • GET
  • Java
  • flask
  • rest api
  • 깃이그노어
  • pandas

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Numpy의 연산 - 브로드캐스팅(Broadcasting)
Python/Numpy

Numpy의 연산 - 브로드캐스팅(Broadcasting)

2022. 11. 24. 13:22
블로그-넘파이 브로드캐스팅
In [1]:
from IPython.display import display, HTML
display(HTML("<style>.container { width:90% !important; }</style>"))
# 코드 입력창의 너비를 조정하는 코드입니다. 

넘파이의 Broadcasting¶

넘파이에는 브로드캐스팅이란 기능이 있는데
조건을 만족하는 배열끼리 짝을 맞춰 연산하는 기능이다.

1. 원소가 하나인 경우, 어떤 배열이나 브로드캐스팅이 가능  
2. 하나의 배열이 1차원 배열인 경우, 브로드캐스팅이 가능
3. 서로 모양이 같은 경우, 브로드 캐스팅이 가능  
4. 차원의 짝이 맞을 때, 브로드 캐스팅이 가능  
 ex) arr1.shape = (3, 1) arr2.shape = (1, 3) 일 때, 연산결과는 (3, 3)

1차원 배열 연산¶

In [2]:
import numpy as np
In [3]:
x = np.random.randint(1, 10, 4)
In [4]:
y = np.random.randint(1, 100, 4)
In [5]:
x
Out[5]:
array([3, 9, 8, 9])
In [6]:
y
Out[6]:
array([30, 50, 61, 83])
In [7]:
x + y
Out[7]:
array([33, 59, 69, 92])
In [8]:
x - y
Out[8]:
array([-27, -41, -53, -74])
In [9]:
x * y
Out[9]:
array([ 90, 450, 488, 747])

참고로 리스트의 경우, + 연산만 존재하고 리스트를 이어 붙인다.¶

In [11]:
# 리스트의 경우
In [12]:
a = [1, 4, 2, 3]
In [13]:
b= [11, 44, 22, 33]
In [14]:
a + b
Out[14]:
[1, 4, 2, 3, 11, 44, 22, 33]
In [15]:
a - b
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In [15], line 1
----> 1 a - b

TypeError: unsupported operand type(s) for -: 'list' and 'list'
In [16]:
a * b
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In [16], line 1
----> 1 a * b

TypeError: can't multiply sequence by non-int of type 'list'
In [17]:
a / b
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In [17], line 1
----> 1 a / b

TypeError: unsupported operand type(s) for /: 'list' and 'list'

2차원 배열 연산¶

In [18]:
P = np.random.randint(1, 10, (3, 2))
In [19]:
Q = np.random.randint(10, 100, (3, 2))
In [20]:
P
Out[20]:
array([[6, 6],
       [7, 7],
       [4, 7]])
In [21]:
Q
Out[21]:
array([[28, 28],
       [41, 35],
       [83, 60]])
In [22]:
P + Q
Out[22]:
array([[34, 34],
       [48, 42],
       [87, 67]])
In [23]:
P - Q
Out[23]:
array([[-22, -22],
       [-34, -28],
       [-79, -53]])
In [24]:
P * Q
Out[24]:
array([[168, 168],
       [287, 245],
       [332, 420]])
In [25]:
P / Q
Out[25]:
array([[0.21428571, 0.21428571],
       [0.17073171, 0.2       ],
       [0.04819277, 0.11666667]])
In [80]:
# 학생들 점수가 있습니다. [56, 75, 88, 92, 66]
# 이 학생들의 점수가 잘못 되어서, -5점씩 한 점수로 바꿔야 합니다.
In [ ]:
# 1. 리스트의 경우
In [26]:
score_list = [56, 75, 88, 92, 66]
In [27]:
new_score_list = []
In [28]:
for score in score_list:
    new_score = score - 5
    new_score_list.append(new_score)
In [29]:
new_score_list
Out[29]:
[51, 70, 83, 87, 61]
In [ ]:
# 2. ndarray의 경우
In [30]:
score_array = np.array([56, 75, 88, 92, 66])
In [31]:
new_score_array = score_array - 5
In [32]:
new_score_array
Out[32]:
array([51, 70, 83, 87, 61])

'Python > Numpy' 카테고리의 다른 글

Numpy Boolean 조건문으로 배열 인덱싱(Boolean Indexing)  (0) 2022.11.24
Numpy ndarray의 데이터 accessing, slicing  (0) 2022.11.24
Numpy의 축(axis) 연산  (0) 2022.11.23
Numpy의 난수 배열 생성 random, randint  (0) 2022.11.23
Numpy의 배열 생성 arange, linspace, reshape  (0) 2022.11.23
    'Python/Numpy' 카테고리의 다른 글
    • Numpy Boolean 조건문으로 배열 인덱싱(Boolean Indexing)
    • Numpy ndarray의 데이터 accessing, slicing
    • Numpy의 축(axis) 연산
    • Numpy의 난수 배열 생성 random, randint
    드레:
    드레:

    티스토리툴바