๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
study๐Ÿ“š/python

[python/ํŒŒ์ด์ฌ] Numpy ๋„˜ํŒŒ์ด (3)

by ์Šค๋‹ 2022. 8. 22.

๋„˜ํŒŒ์ด(Numpy)

8. Subsetting, Slicing

8.1 Subsetting

a

array([5, 7, 9])

a[2]

9

8.2 Slicing

a[0:2]

array([5, 7])

b

array([[1.5, 2. , 3. ],
            [4. , 5. , 6. ]])

b[0:2, 1]

array([2., 5.])

c

array([[[1.5, 2. , 3. ],
             [4. , 5. , 6. ]],
            [[3. , 2. , 1. ],
              [4. , 5. , 6. ]]])

c[1, :]

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

#์—ญ์ˆœ ์ •๋ ฌ
a[::-1]

array([9, 7, 5])

8.3 Boolean indexing

a

array([5, 6, 9])

a[a<6]

array([5])

8.4 Fancy Indexing

b

array([[1.5, 2. , 3. ],
[4. , 5. , 6. ]])

# Select elements (1,0),(0,1),(1,2) and (0,0)
b[[1,0,1,0], [0,1,2,0]]

array([4. , 2. , 6. , 1.5])

9. Array Manipulation

9.1 Transposing Array

b

array([[1.5, 2. , 3. ],
            [4. , 5. , 6. ]])

  • transpose(b) : ํ–‰๊ณผ ์—ด ๋ณ€๊ฒฝ ex) (3, 2) -> (2, 3)
#ํ–‰์—ด ๋ฐ”๊พธ๊ธฐ
i = np.transpose(b)
i

array([[1.5, 4. ],
            [2. , 5. ],
            [3. , 6. ]])

i.T

array([[1.5, 2. , 3. ],
            [4. , 5. , 6. ]])

9.2 Changing Array Shape

b

array([[1.5, 2. , 3. ],
            [4. , 5. , 6. ]])

  • b.revel() : 1์ฐจ์›์œผ๋กœ ๋ณ€๊ฒฝ
# flatten(์ฐจ์›์ถ•์†Œ) the array
b.ravel()

array([1.5, 2. , 3. , 4. , 5. , 6. ])

g

array([[-0.5, 0. , 0. ],
           [-3. , -3. , -3. ]])

g.reshape(3, 2)

array([[-0.5, 0. ],
            [ 0. , -3. ],
            [-3. , -3. ]])

9.3 Adding/Removing Elements

h

array([1, 2, 3])

g

array([[-0.5, 0. , 0. ],
           [-3. , -3. , -3. ]])

np.append(h, g)

array([ 1. , 2. , 3. , -0.5, 0. , 0. , -3. , -3. , -3. ])

a

array([5, 7, 9])

  • np.insert(a, x, y) : ๋ฐฐ์—ด ์œ„์น˜ ๊ฐ’ x์ธ ๊ณณ์— y ์‚ฝ์ž…
np.insert(a, 1, 5) # array a์—์„œ ๋ฐฐ์—ด ์œ„์น˜ ๊ฐ’์ด 1์ธ ๊ณณ์— 5 ์‚ฝ์ž…

array([5, 5, 7, 9])

  • np.delete(a, [x]) : ๋ฐฐ์—ด์— x์ธ ๊ฐ’ ์‚ญ์ œ
np.delete(a, [2]) # ๋ฐฐ์—ด์— 2์ธ ๊ฐ’ ์‚ญ์ œ

array([5, 7])

9.4 Combinating Arrays

a

array([5, 7, 9])

d

array([10, 15, 20, 25])

  • np.concatenate(a, b, axis=0) : ๋‘ ๋ฐฐ์—ด ํ•ฉ์นจ
np.concatenate((a, d), axis=0)

array([ 5, 7, 9, 10, 15, 20, 25])

np.concatenate((a,h),axis=1)

-> ์˜ค๋ฅ˜๋‚œ ์ด์œ ๋Š” 1์ฐจ์› ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์—
axis=1์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” ๋ฐฉํ–ฅ์ด axis=0 ํ•˜๋‚˜ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

a

array([5, 7, 9])

b

array([4, 5, 6])

  • np.vstack : ๋‘ ๋ฐฐ์—ด์„ ์„ธ๋กœ๋กœ ํ•ฉ์น  ๋•Œ
# v: vertica;(์ˆ˜์ง์ ์ธ) 
np.vstack((a, b))

array([[5, 7, 9],
            [4, 5, 6]])

e

array([[7, 7],
            [7, 7]])

f

array([[1., 0.],
            [0., 1.]])

  • np.hstack : ๋‘ ๋ฐฐ์—ด์„ ๊ฐ€๋กœ๋กœ ํ•ฉ์น  ๋•Œ
# h: horizontal(์ˆ˜ํ‰์ ์ธ)
np.hstack((e, f))

array([[7., 7., 1., 0.],
            [7., 7., 0., 1.]])

9.5 Splitting Arrays

a

array([5, 7, 9])

  • np.hsplit(x, a) : ํ•œ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ˆ˜ํ‰ ์ถ• (์—ด ๋ฐฉํ–ฅ, column-wise)์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜์œ„ ๋ฐฐ์—ด๋กœ ๋ถ„ํ• ํ•˜๊ธฐ
np.hsplit(a, 3)

[array([5]), array([7]), array([9])]

c

array([[[1.5, 2. , 1. ],
             [4. , 5. , 6. ]],
            [[3. , 2. , 3. ],
             [4. , 5. , 6. ]]])

  • np.vsplit(x, a) : ํ•œ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ˆ˜์ง ์ถ•(ํ–‰ ๋ฐฉํ–ฅ, row-wise)์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜์œ„ ๋ฐฐ์—ด๋กœ ๋ถ„ํ• ํ•˜๊ธฐ
np.vsplit(c, 2)

[array([[[1.5, 2. , 1. ],
               [4. , 5. , 6. ]]]),
array([[[3., 2., 3.],
             [4., 5., 6.]]])]

๋Œ“๊ธ€