06. Gelişmiş indeksleme

Python’a göre Numpy çok farklı indeskleme yeteneklerine sahiptir. Daha önce gördüğümüz klasik indeksleme özellikleri yanı sıra, bir array yine bir integer veya boolean array’le indekslenebilir.

06.01. Integer bir array ile indeksleme

Görüldüğü gibi tek boyutlu veya çok boyutlu dizi oluşturulabilir. Hata iki indis ile veri çekilebilir. Örneğin,

Boyut olayı size kalmış, i, j, k, m ve vb. kadar indisiniz olabilir. Tabii kodu yönetmenin gittikçe zorlaştığını unutmayın. Şimdi çok boyutlu bir dizi de bir kolon’un maksimum değerlerinin indislerini bulup, bu indisleri diğer bir array’de kullanalım.

Burada time ve data farklı array yaratma teknikleri ile yaratıldı. data.argmax(axis=0) her kolon’un en büyük indis değeri seçildi. Ardından bu indisler time ve data üzerinden verileri çekmekte kullanıldı. Şimdi birden fazla indisi güncelleme olayına bakalım.

Atama işlemi tek değer aldığında tüm indisleri değiştirir. Atama işleminde birden fazla değer varsa indis ve değer sayısı uyuşmalıdır. Ayrıca indis güncellemesi +=, *=, -= vb. şekilde yapılabilir.

06.02. Boolean bir array ile indeksleme

Boolean bir array oluşturup sadece belirli indisleri seçme şansımız vardır. Ancak seçim sonrası çok boyutlu bir dizi tek boyuta indirgenmiş olur. İstenildiği taktirde bu tek boyutlu dizinin shape özelliği değiştirilebilir. Basit bir örnek:

bool_array’e a>4 durumunu sağlayan değerler true, sağlamayanlar ise false olarak aktarılır. Eğer bu array indis olarak kullanılırsa tek boyutlu True değerleri içeren bir dizi döndürülür.

Tüm True değerler atama işlemi ile güncellenebilir. Örneğin tüm True değerleri “0” yapalım.

06.03. ix_() fonksiyonu

ix_ fonksiyonu, farklı vektörleri birleştirip sonuç elde etmek için kullanılabilir. Örneğin, a, b ve c vektörlerinin a+b*c şeklinde bir hesabını yapalım. Örneğin,