<jupyter_start><jupyter_text>요약- numpy : 선형대수를 빠르게 연산해주는 패키지- 행열의 생성 1 : ndarray, np.array(iterable)- 행열의 생성 2 : ones, zeros- 행열 데이터 선택 : array[x, y, z]- 행열 데이터 수정    - 행열 데이터를 선택    - =, > (값 - scala, vector, matrix)    - 브로드 캐스팅 개념- arange : list에서 사용하는 range와 비슷한 함수 : 결과가 ndarray데이터 타입으로 나온다.  quiz 1- 100 ~ 130까지 랜덤함 숫자를 가지는 8*8행렬을 만들고,- 3의 배수는 fiz, 5의 배수는 buz, 3과 5의 배수는 fbz 문자로 변환<jupyter_code>datas = np.random.randint(100, 131, size=(8, 8))

# 3의 배수, 5의 배수, 15의 배수 위치값에 대한 True, False matrix를 생성
idx_3 = datas % 3 == 0
idx_5 = datas % 5 == 0
idx_15 = datas % 15 == 0

# 데이터의 타입을 str으로 변환
result = datas.astype("str")
result

# True, False matrix를 이용하여 특정 조건의 데이터를 선택 후 브로드캐스팅하게 값을 대입
result[idx_3] = "fiz"
result[idx_5] = "buz"
result[idx_15] = "fbz"

print(result)<jupyter_output>[['fiz' 'fiz' 'fiz' 'fiz' 'fbz' 'fiz' 'buz' 'fiz']
 ['128' 'fiz' 'fiz' 'fiz' 'fbz' '124' '112' 'fiz']
 ['118' 'buz' 'buz' 'fiz' '119' '101' '103' 'fiz']
 ['fiz' '104' 'fiz' '109' 'fiz' '104' '107' 'fiz']
 ['109' '104' 'buz' '109' 'fiz' 'fiz' '112' '103']
 ['fiz' 'fiz' 'buz' 'buz' 'fiz' '107' 'fiz' 'buz']
 ['104' '103' '118' '109' 'fiz' '122' 'fiz' 'fiz']
 ['122' '106' '113' '116' '101' 'fiz' '122' 'fiz']]<jupyter_text>quiz 2.- 1 ~ 20까지 랜덤한 숫자를 가지는 5*5 행렬 생성- 최대값에는 MAX, 최소값에는 MIN 문자열이 들어가도록 치환하는 코드를 작성- 최대값과 최소값 함수```np.min(ndarray), np.max(ndarray)```<jupyter_code>datas = np.random.randint(1, 21, size = (5, 5))

# 최소값과 최대값 확인
min_num, max_num = np.min(datas), np.max(datas)

idx_min = datas == min_num
idx_max = datas == max_num

# 문자열 행렬로 변환
result = datas.astype("str")

result[idx_min] = "MIN"
result[idx_max] = "MAX"

print(result)<jupyter_output>[['17' '16' '17' '2' '2']
 ['13' '10' 'MIN' '15' '13']
 ['3' '5' '10' 'MAX' '12']
 ['9' '2' '17' '16' '18']
 ['3' '10' '3' '12' '6']]<jupyter_text>1. linspace, logspace 함수- linspace    - 선형적으로 자르는 것    - 설정한 범위에서 선형적을 분할한 위치의 값을 출력- logspace    - 로그적으로 자르는 것    - 설정한 범위에서 로그로 분할한 위치의 값을 출력<jupyter_code># linspace
np.linspace(0, 100, 5) # 0 ~ 100까지 5등분
# logspace
# log10(x1) = 2, log10(x2) = 3, log10(x3) = 4
np.logspace(2, 4, 3) # 2 ~ 4까지 3등분을 의미
# 30세에 연봉이 $100000이고, 60세의 연봉이 $1000000일때
# 연봉이 선형으로 증가, 지수함수로 증가하는 두 경우에서의 40세와, 50세 연봉을 출력

age_30 = 100000
age_60 = 1000000

# 선형적으로 증가
print("선형적으로 증가")
print(np.linspace(age_30, age_60, 4))

# 지수적으로 증가
print("지수적으로 증가")
print(np.logspace(np.log10(age_30), np.log10(age_60), 4))<jupyter_output>선형적으로 증가
[ 100000.  400000.  700000. 1000000.]
지수적으로 증가
[ 100000.          215443.46900319  464158.88336128 1000000.        ]<jupyter_text>2. numpy random- seed : 랜덤값을 설정값- rand : 균등분포로 랜덤한 값을 생성- randn : 정규분포로 랜덤한 값을 생성- randint : 균등분포로 정수값을 랜덤하게 생성- shuffle : 행렬 데이터를 섞어준다.- choice : 특정 확률로 데이터를 선택<jupyter_code># seed
np.random.seed(1)
result1 = np.random.randint(1, 100, 10)

np.random.seed(1)
result2 = np.random.randint(1, 100, 10)

np.random.seed(2)
result3 = np.random.randint(1, 100, 10)

result1, result2, result3
# rand
np.random.rand(10)
# randn
np.random.randn(10)
# shuffle
r = np.random.randint(1, 10, (3, 4))
print(r)
np.random.shuffle(r)
print(r)
# choice
np.random.choice(5, 10, p=[0.1, 0, 0.4, 0.2, 0.3]) # p : 확률데이터를 설정
# unique : 유일한 값을 뽑아주는 함수
numbers, counts = np.unique(r, return_counts=True)
print(numbers)
print(counts) # 값이 나온 횟수 출력<jupyter_output>[1 2 4 5 6 7 8 9]
[1 1 1 2 4 1 1 1]<jupyter_text>3. 행렬 데이터의 결합- concatenate<jupyter_code>na1 = np.random.randint(10, size=(2, 3))
na2 = np.random.randint(10, size=(3, 2))
na3 = np.random.randint(10, size=(3, 3))
# 세로 결합 : na1, na3 결합
np.concatenate((na1, na3))
# 가로 결합 : na2, na3 결합
np.concatenate((na2, na3), axis = 1) # axis = 1로 설정을 해주어서 가로 결합을 설정해주어야한다.
# c_, r_
# c_ : column으로 결합
np.c_[np.array([1, 2, 3]), np.array([4, 5, 6])]

# r_ : raw로 결합
np.r_[np.array([1, 2, 3]), np.array([4, 5, 6])]
# split, var, std, mean, ...<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.18547544409613376, 'fraction_numerical': 0.11076280041797283, 'mean_word_length': 3.8653113087674713, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '340291', 'license': 'MIT', 'n_tokens_mistral': 2539, 'n_tokens_neox': 2613, 'n_words': 515, 'path': 'Python/numpy-pandas/02_numpy_2.ipynb', 'repo_name': 'kimchangkyu/TIL', 'size': '3828'}