[Python] Numpy - ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ(Array Indexing)

2020. 9. 19. 04:41ยท๊ฐœ๋ฐœ ํƒ€์ž„์บก์А/Python

์ •์ˆ˜ ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ

๋ฐฐ์—ด์—์„œ ํ•˜๋‚˜์˜ ๋‹จ์ผํ•œ ์›์†Œ๋ฅผ ์—‘์„ธ์Šค ํ•  ๊ฒฝ์šฐ tuple๋กœ ์ธ๋ฑ์‹ฑ

์ด๊ฒƒ์˜ ๋ชฉ์ ์€ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ํ•œ๊บผ๋ฒˆ์— ๋ฝ‘์•„๋‚ด์„œ ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ฒƒ์ด๋‹ค.

์Šฌ๋ผ์ด์‹ฑ์„ ํ•˜๋ฉด ์›๋ณธ ๋ฐฐ์—ด์˜ ์—ฐ์†์ ์ธ ๋ฐฐ์—ด์ด๊ฑฐ๋‚˜, ํ˜น์€ ์ผ์ •ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ผ์„œ ์ž˜๋ผ๋‚ธ ํ˜•ํƒœ์ง€๋งŒ,

์ •์ˆ˜ ๋ฐฐ์—ด ์ธ๋ฑ์‹ค์€ ๋ถˆ๊ทœ์น™์ ์œผ๋กœ ์›๋ณธ ๋ฐฐ์—ด์˜ ์ผ๋ถ€๋ฅผ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค.

 

*์Šฌ๋ผ์ด์‹ฑ์€ ๋‹จ์ง€ ์›๋ณธ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด View๋ฅผ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ์— ์ง€๋‚˜์ง€ ์•Š์ง€๋งŒ, ์ •์ˆ˜๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ์€ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

1์ฐจ์› ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ •์ˆ˜ ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ

์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋œ ๋ฐฐ์—ด์˜ ๊ฐ ๊ฐ’์€ ๊ทธ ์ž๋ฆฌ์— ์˜ฌ ์›๋ž˜ ๋ฐฐ์—ด์˜ ๊ฐ’์˜ ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.

x = np.arange(10, 1, -1)
print(x) #[10  9  8  7  6  5  4  3  2]

print(x[np.array([3, 3, 1, 8])])
#[7 7 9 2]

print(x[[3, 3, 1, 8]]) #๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฐ์—ด๋กœ ์•”๋ฌต์ ์œผ๋กœ ๋ณ€ํ™˜๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰ ๋™์ผํ•˜๋‹ค.
#[7 7 9 2]

 

print(x[np.array([3, 3, -3, 8])])
#[7 7 4 2]

๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

print(x[np.array([[1, 1], [2, 3]])])

#[[9 9]
#[8 7]]

1์ฐจ์› ๋ฐฐ์—ด์„ ๋‹ค์ฐจ์› ๋ฐฐ์—ด๋กœ  ์ธ๋ฑ์‹ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฆฌํ„ด๋˜๋Š” ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ธ๋ฑ์Šค ๋ฐฐ์—ด๊ณผ ๋™์ผํ•œ shape์˜ ๋ฐฐ์—ด์ด๊ณ ,

๊ฐ’์€ ์ธ๋ฑ์Šค ๋ฐฐ์—ด์— ์˜ํ•ด์„œ ์ง€์ •ํ•œ ๊ฐ’๋“ค์ด๋‹ค.

 

๋‹ค์ฐจ์› ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ •์ˆ˜ ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ

y = np.arange(35).reshape(5, 7)
print(y)

#[[ 0  1  2  3  4  5  6]
#[ 7  8  9 10 11 12 13]
#[14 15 16 17 18 19 20]
#[21 22 23 24 25 26 27]
#[28 29 30 31 32 33 34]]

#1
print(y[np.array([0, 2, 4]), np.array([0, 1, 2])])
#print(y[[0, 2, 4], [0, 1, 2]])

#[ 0 15 30]

#2
print(y[np.array([[0, 1], [2, 3]]), np.array([[4, 5], [2, 3]])])

#[[ 4 12]
#[16 24]]

๋‹ค์ฐจ์› ๋ฐฐ์—ด์ด ๋ฐฐ์—ด๋กœ ์ธ๋ฑ์‹ฑ ๋  ๊ฒฝ์šฐ์—๋Š” ๊ทœ์น™์ด ์ข€๋” ๋ณต์žกํ•ด์ง„๋‹ค.  

์šฐ์„  ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ๋Š” rank๊ฐœ์˜ ์ธ๋ฑ์Šค ๋ฐฐ์—ด๋กœ ์ œ๊ณต๋˜๊ณ , ๋ชจ๋“  ์ธ๋ฑ์Šค ๋ฐฐ์—ด๋“ค์ด ๋™์ผํ•œ shape์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

์ด ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋ฐฐ์—ด๊ณผ ๋™์ผํ•œ shape๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ , ๋ฐฐ์—ด์˜ ๊ฐ’์€ ๊ฐ๊ฐ์˜ ์ฐจ์›์— ๋Œ€ํ•ด ๊ทธ ์ฐจ์›์— ๋Œ€์‘ํ•˜๋Š” ์ธ๋ฑ์Šค ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ

ํ•˜๋Š” ๊ฐ’์ด๋‹ค.

 

์ฐธ๊ณ 

#1 -> 0ํ–‰ 0์—ด / 2ํ–‰ 1์—ด / 4ํ–‰ 2์—ด

#2 -> 0ํ–‰ 4์—ด / 1ํ–‰ 5์—ด / 2ํ–‰ 2์—ด / 3ํ–‰ 3์—ด

 

์ธ๋ฑ์Šค ๋ฐฐ์—ด๋“ค์ด ์„œ๋กœ ๋™์ผํ•œ shape์ด ์•„๋‹ ๊ฒฝ์šฐ์—๋Š” ๋™์ผํ•œ shape์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด broadcast๋ฅผ ์‹œ๋„ํ•˜๋Š”๋ฐ...

์•„์ง ๋ฐฐ์šฐ์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ƒ๋žตํ•œ๋‹ค.

 

์›๋ž˜ ๋ฐฐ์—ด์˜ rank๋ณด๋‹ค ์ ์€ ๊ฐœ์ˆ˜์˜ ์ธ๋ฑ์Šค ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์‹ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

print(y[np.array([0, 1, 4])])

#[[ 0  1  2  3  4  5  6]
#[ 7  8  9 10 11 12 13]
#[28 29 30 31 32 33 34]]

์ด ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋ฐฐ์—ด์— ์žˆ๋Š” ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ํ–‰๋“ค์„ ์„ ํƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ถˆ๋ฆฌ์–ธ ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ(Boolean array indexing)

๋ถˆ๋ฆฌ์–ธ ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ์€ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ฒŒ ํ•˜๋Š” ์š”์†Œ๋งŒ ์„ ํƒํ•˜๊ณ ์ž ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค.

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

bool_idx = (a > 2)
print(a[bool_idx])

#[3 4 5 6]
print(a[a > 2])

#[3 4 5 6]

์œ„ ์ฝ”๋“œ์™€ ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

'๊ฐœ๋ฐœ ํƒ€์ž„์บก์А > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] Matplotlib ๊ธฐ์ดˆ ์ •๋ฆฌ  (0) 2020.09.20
[Python] Numpy - ๋ฐฐ์—ด ์—ฐ์‚ฐ(Array math), ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…(Broadcasting)  (0) 2020.09.19
[Python] Numpy - ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ  (0) 2020.09.19
[Python] Numpy - ๋ฐฐ์—ด ์Šฌ๋ผ์ด์‹ฑ(slicing)  (0) 2020.09.18
[Python] Numpy - ๋ฐฐ์—ด reshape  (0) 2020.09.18
'๊ฐœ๋ฐœ ํƒ€์ž„์บก์А/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Python] Matplotlib ๊ธฐ์ดˆ ์ •๋ฆฌ
  • [Python] Numpy - ๋ฐฐ์—ด ์—ฐ์‚ฐ(Array math), ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…(Broadcasting)
  • [Python] Numpy - ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ
  • [Python] Numpy - ๋ฐฐ์—ด ์Šฌ๋ผ์ด์‹ฑ(slicing)
๐ŸฅญMango
๐ŸฅญMango
  • ๐ŸฅญMango
    AppleMango๐Ÿฅญ
    ๐ŸฅญMango
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • iOS
        • Swift
        • SwiftUI
        • RxSwift
      • Algorithm
        • C
        • Python
        • Swift
      • Computer Science
        • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ
        • OS
      • ...
      • ๊ฐœ๋ฐœ ํƒ€์ž„์บก์А
        • Python
        • Flutter
        • Android
        • Kotlin
        • Java
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    typing animation
    ํ† ๋งˆํ† 
    ํŒŒ์ด์ฌ ์ •๋ ฌ
    ํŒŒ์ด์ฌ 1459
    ์ฝ”ํ‹€๋ฆฐ ์ƒ์†
    ์ฝ”ํ‹€๋ฆฐ
    ์—ญ์‚ฌ ํŒŒ์ด์ฌ
    ํŒŒ์ด์ฌ ํ† ๋งˆํ† 
    ํŒŒ์ด์ฌ
    ํŒŒ์ด์ฌ 14503
    SwiftUI Apple Login
    MapMarker
    1613 ํŒŒ์ด์ฌ
    ๋ฐฑ์ค€ ํ† ๋งˆํ† 
    1์ฐจ์› ๋ฟŒ์š”๋ฟŒ์š”
    ํŒŒ์ด์ฌ 6118
    14503 ํŒŒ์ด์ฌ
    swiftUI Gradients
    swiftUI tabview
    1613 ์—ญ์‚ฌ
    14503 ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ
    Apple Login
    Code Base
    Swift Hello World!
    Custom Map Marker
    IOS
    ๋ฐฑ์ค€ ์†Œ์ˆ˜
    SwiftUI
    ์Šคํƒ
    6118
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.2
๐ŸฅญMango
[Python] Numpy - ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ(Array Indexing)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”