Menu
Coddy logo textTech

Boyutsal İndeksleme

Coddy'nin Numpy Temelleri kursunda ders 13 / 18.

Numpy son derece güçlü bir aracı destekler - Boyutları İndeksleme.

Boyutları indekslemek için iki nokta üst üste : kullanırız. İki nokta üst üste, yerleştirildiği belirli indeksteki tüm öğeleri alır. Örneğin, ary.shape # --> (2, 1, 3, 1) şeklinde bir dizimiz olduğunu varsayalım, iki nokta üst üste : işaretini ary[:, 0, 0, 0] şeklinde yerleştirmek, şeklin en solundaki iki öğeyi alacak ve bunların her biri için geri kalan boyutların sıfırıncı öğesini çıkaracaktır.

Not: İki nokta üst üste işaretinin köşeli parantez [] içindeki konumu, indekslediğimiz boyuttur, yani:

  • ary[:, 0, 0, 0] 4D boyutunu indeksler
  • ary[0, :, 0, 0] 3D boyutunu indeksler
  • ary[0, 0, :, 0] 2D boyutunu indeksler
  • ary[0, 0, 0, :] 1D boyutunu indeksler
  • ary[:, :, 0, 0] 4D ve 3D boyutlarını indeksler
  • vb.

Örnek 1

ary = np.array([
	[1, 2], 
	[3, 4]
])
ary[:, 0] # --> [1, 3]
ary[0, :] # --> [1, 2]

İki nokta üst üste, belirtilen indeksteki tüm öğeleri alır ve bir sonraki indekse devam eder

Bizim durumumuzda: 

  • ary[:, 0] Tüm ilk öğeleri alırız ve her öğede 0. öğeyi alırız
  • ary[0, :] İlk öğeyi alırız ve o öğedeki tüm öğeleri alırız.

Örnek 2

3D dizi

ary = np.array([
	[[1, 2], [3, 4]],
	[[5, 6], [7, 8]]
])
ary[:, 0, :] # --> [[1, 2], [5, 6]]
ary[:, :, 0] # --> [[1, 3], [5, 7]]
  • ary[:, 0, :] Tüm öğeleri alırız, sonra ilk öğeyi alırız ve son olarak oradaki her şeyi alırız
  • ary[:, :, 0] Tüm öğeleri alırız, sonra bu öğelerin hepsini alırız ve son olarak her birindeki ilk öğeyi alırız.
  • ary[0, :, :] ifadesinin çıktısının ne olacağını tahmin edebilir misiniz?

Örnek 3

Her satırdan ilk ve son indeksi al

x = np.array([
	[ 0,  1,  2,  3,  4,  5],
	[ 6,  7,  8,  9, 10, 11],
	[12, 13, 14, 15, 16, 17],
	[18, 19, 20, 21, 22, 23],
])
x[:, np.array([0, -1])]
>>> [0, 5, 6, 11, 12, 17, 18, 23]

Örnek 4

Tıpkı açılış örneğindeki gibi (2, 1, 3, 1) şekline sahip bir dizi

ary = np.array([
    [
        [
            [1],[2],[3]
        ]
    ],
    [
        [
            [4],[5],[6]
        ]
    ]
])
ary[:, 0, 0, 0] # --> [1, 4]
ary[0, :, 0, 0] # --> [1]
ary[0, 0, :, 0] # --> [1, 2, 3]
ary[0, 0, 0, :] # --> [1]

Not: Dilimleme (Slicing) dersinde öğrendiğimiz start:stop:step dilimleme sözdizimini kullanmak da mümkündür

  • ary[:, 0:5, 2:3, :]
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Verilen bir 3D dizi ary içindeki her bir 1D diziden 2., 3. ve 4. sayıları alın

Kendin dene

import numpy as np
'''
ary looks like:
array([[[ 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, 35, 36, 37, 38, 39]],

       [[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
        [50, 51, 52, 53, 54, 55, 56, 57, 58, 59]],

       [[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
        [70, 71, 72, 73, 74, 75, 76, 77, 78, 79]],

       [[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
        [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]])
'''
ary = np.arange(0, 100).reshape(5, 2, 10) # don't change ary
res = ary[] # <-- Complete indices
print(str(res).replace("\n", "")) # don't change this line

Numpy Temelleri bölümündeki tüm dersler