Python/Python Language

Numpy ๋ฐฐ์—ด(Array)์— ๋Œ€ํ•œ ๊ฐœ๋… ์„ค๋ช…

567Rabbit 2024. 4. 24. 14:40

NumPy [Numerical Python]


- ๋ฐฐ์—ด ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” Python๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋‹ค
- ์„ ํ˜• ๋Œ€์ˆ˜ํ•™, ํ‘ธ๋ฆฌ์— ๋ณ€ํ™˜ ๋ฐ ํ–‰๋ ฌ ์˜์—ญ์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ๋„ ์žˆ๋‹ค
- ์ˆซ์ž ํŒŒ์ด์ฌ์„ ์˜๋ฏธํ•œ๋‹ค
- List๋Š” ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ ค์„œ ์ตœ๋Œ€ 50๋ฐฐ ๋น ๋ฅธ ๋ฐฐ์—ด ๊ฐ์ฑ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค

 


์„ค์น˜ pip install numpy

import numpy as np     #๋ณ„์นญ np

 

 

 


์Šฌ๋ผ์ด์‹ฑ

์ธ๋ฑ์Šค์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋ผ์ŠคํŠธ์ธ๋ฑ์Šค ๋ฏธํฌํ•จ
Arr = np.array([1,2,3,4,5,6,7])
print(Arr[1:5])

 

 



Numpy์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•


i - ์ •์ˆ˜
b - ๋ถ€์šธ
u - ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜
c - float
m - timedelta
M - datetime
O - object
S - string
U - unicode string
V - ๋‹ค๋ฅธ ์œ ํ˜•์— ๋Œ€ํ•œ ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ(fixed chunk of memory for void)

 

ex)

๋ฐ์ดํ„ฐ ์œ ํ˜•์ด 4๋ฐ”์ดํŠธ ์ •์ˆ˜์ธ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค
fo = np.array([1,2,3,4], dtype = 'i4')
print(fo)
print(fo.dtype)

 

 

 


๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜• ํ™•์ธ

.dtype
arr3 = np.array(['apple','banana','cherry']) 
print(arr3.dtype)


 


๊ธฐ์กด array์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋ณ€ํ™˜


- astype()ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ์œ ํ˜• ํƒ€์ž…์„ ๋ฐ”๊ฟ”์ค€๋‹ค

 

down = np.array([1.1, 2.1, 3.1])
newarr = down.astype('i')
print(newarr)

์ˆซ์ž๋ฅผ ๋ถ€์šธ๋กœ ๋ณ€๊ฒฝ
bol = np.array([1,0,3]) #0 F 1 T
newbol = bol.astype(bool)
print(newbol)

 

 

 

 

 

๋ฐฐ์—ด ๋ณต์‚ฌ[์ƒˆ ๋ฐฐ์—ด]์™€ ๋ณด๊ธฐ[์›๋ณธ๋ฐฐ์—ด]


๋ณต์‚ฌ๋ณธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ๋ณต์‚ฌ๋ณธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์›๋ž˜๋ฐฐ์—ด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์›๋ž˜๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ์€ ๋ณต์‚ฌ๋ณธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค

๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•˜์ง€ ์•Š๊ณ  ๋ทฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์›๋ณธarray์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ์›๋ณธ array์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ view์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค

Copy = np.array([1,2,3,4,5])
view = Copy.copy()
Copy[0] = 42
print(Copy)
print(view)

 

 

 

 


Shape 

 

๋ฐฐ์—ด์˜ ๋ชจ์–‘์€ ๊ฐ์ฐจ์›์˜ ์š”์†Œ์ˆ˜

 

NumPy ๋ฐฐ์—ด์—๋Š” ํ•ด๋‹น ์š”์†Œ์˜ ์ˆ˜๋ฅผ ๊ฐ–๋Š” ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ํŠœํ”Œ์„ ๋ฆฌํ„ดํ•œ๋‹ค

 

์•„๋ž˜์— ์˜ˆ์‹œ : ๋ฐฐ์—ด์— 2์ฐจ์›์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค

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

 

์ฒซ๋ฒˆ์งธ ์ฐจ์›์—๋Š” 2๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๊ณ  ๋‘๋ฒˆ์งธ ์ฐจ์›์—๋Š” 4๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค

 

 



Reshape (๋ฐฐ์—ด์˜ ์žฌ๊ตฌ์„ฑ

 

- ๋ฐฐ์—ด์˜ ๋ชจ์–‘์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค

 

 

์•„๋ž˜์— 12๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๋‹ค์Œ 1์ฐจ์› ๋ฐฐ์—ด์„ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค

Dimension = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
custom = Dimension.reshape(4,3)
Dimension.reshape(2,3,2)

 



Flattening the arrays ๋ฐฐ์—ด ํ‰๋ฉดํ™” 

 

- ๋ฐฐ์—ด์„ ๋ณ‘ํ•ฉํ•œ๋‹ค๋Š” ๋ง์€ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ 1์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค

= reshape(-1)

 

 

all = np.array([[1,2,3],[4,5,6],[7,8,9]])
merge = all.reshape(-1)

 

 




๋ฐฐ์—ด ๊ฒ€์ƒ‰

 

- ํŠน์ • ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ผ์น˜ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค where() ์•„๋ž˜์— ์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ’์ด 4์ธ ์ˆซ์ž๋ฅผ ๊ฒ€์ƒ‰

(์ธ๋ฑ์Šค๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค)

find = np.array([1,2,3,4,5,4,4])
np.where(find == 4)


#๊ฐ’์ด ์ง์ˆ˜์ธ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค
twon = np.array([1,2,3,4,5,6,7,8])

np.where(twon%2==0)

 


#๊ฐ’์ด ํ™€์ˆ˜์ธ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค
one = np.array([1,2,3,4,5,6,7,8])
np.where(one%2==1)

 

 


๋ฐฐ์—ด ์ •๋ ฌ

 

- ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค sort()
twoarr = np.array([[3,2,4],[5,0,1]]) #์ฐจ์›์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ฐจ์› ์•ˆ์— ์žˆ๋Š” ์š”์†Œ ์ •๋ ฌ
print(np.sort(twoarr))

 

 

 

๋ฐฐ์—ด ํ•„ํ„ฐ

 

- ๊ธฐ์กด ๋ฐฐ์—ด์—์„œ ์ผ๋ถ€ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์™€ ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ํ•„ํ„ฐ๋ง์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค

- ์ธ๋ฑ์Šค 0๊ณผ 2์˜ ์š”์†Œ๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค

 


tf = np.array([41, 42, 43, 44])
Null = [True, False, True, False]
notnull = tf[Null]
print(notnull)

 

 


# ์›๋ž˜ ๋ฐฐ์—ด์—์„œ ์ง์ˆ˜์š”์†Œ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•„ํ„ฐ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค


qq = np.array([1,2,3,4,5,6,7]) #๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
filter_arr = [] #๋น„์–ด์ ธ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ฆ
for element in qq :
    if element %2 ==0 :
        filter_arr.append(True)
    else:
        filter_arr.append(False)
newa = qq[filter_arr]
print(filter_arr)
print(newa)