728x90
반응형
[ 문 제 1 ]
1. 100 ~ 130 까지 랜덤한 숫자를 가지는 8*8 행렬을 만들고,
2. 3의 배수는 fiz, 5의 배수는 buz, 3과 5의 배수는 fbz 문자열로 치환
1. 100 ~ 130 까지 랜덤한 숫자를 가지는 8*8 행렬 만들기
import numpy as np
# random.randint(low, high=None, size=None, dtype=int)
datas = np.random.randint(100, 130, size=(8,8))
print(datas)
[[108 125 103 100 102 103 108 110]
[118 110 105 106 109 121 112 106]
[101 123 127 127 123 129 107 118]
[114 113 129 108 127 107 103 117]
[127 111 103 108 118 115 116 120]
[109 107 104 106 109 103 126 115]
[123 121 101 121 113 100 129 117]
[122 121 102 106 102 110 110 115]]
2번을 수행하기 위해서는 행과 열을 반복하면서 조건에 해당하는지 확인 후 치환하는 방법이 있을 것이다.
다음으로는 특정 조건의 데이터를 선택 후 브로드캐스팅 하여 값을 대입하는 방법을 사용할 수 있겠다.
여기서 브로드캐스팅(Broadcasting)이라는 것은 단어 뜻에서와 같이 전파한다는 의미이다.
파이썬 numpy에서 말하는 브로드캐스팅은 일정 조건을 부합하는 다른 형태의 배열끼리 연산을 수행하는 것을 의미함.
idx_3 = datas % 3 == 0
idx_5 = datas % 5 == 0
idx_15 = datas % 15 == 0
result = datas.astype("str")
result[idx_3] = "fiz"
result[idx_5] = "buz"
result[idx_15] = "fbz"
print(result)
[['fiz' 'fiz' '119' '104' '127' 'fiz' 'fiz' 'fiz']
['107' '101' '121' '112' '109' 'fiz' 'fiz' '116']
['buz' 'buz' '109' 'buz' '127' '113' '113' '122']
['107' 'fbz' 'fiz' 'fiz' '118' 'fiz' 'fbz' '122']
['101' 'fiz' 'fiz' '107' 'fbz' 'fiz' 'fiz' '107']
['118' 'buz' '112' 'fbz' 'fiz' 'fbz' '121' '101']
['fbz' 'fiz' 'fbz' '122' '127' '103' 'fiz' 'fiz']
['buz' 'fbz' 'fiz' '106' '109' 'fiz' 'fiz' '109']]
[ 문 제 2 ]
1. 1 ~ 20 까지 랜덤한 숫자를 가지는 5*5 행렬 생성
2. 최대값에는 MAX, 최소값에는 MIN 문자열이 들어가도록 치환
import numpy as np
datas = np.random.randint(1, 20, size=(5,5))
min_num, max_num = np.min(datas), np.max(datas)
idx_max = datas == max_num
idx_min = datas == min_num
result = datas.astype("str")
result[idx_max] = "MAX"
result[idx_min] = "MIN"
print(result)
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Numpy] linspace, logspace 함수 (0) | 2021.06.24 |
---|---|
[Numpy] 행렬 데이터의 결합 (0) | 2021.06.23 |
[Numpy] Numpy 개요 및 행렬 데이터 만들기 (0) | 2021.05.17 |
[python] map(), filter(), reduce() 구현 (0) | 2021.05.17 |
[python] Decolator - ① (0) | 2021.05.06 |