NumPy Tutorials

NumPy Dizi Yeniden Şekillendirme ve Yeniden Boyutlandırma

Spread the love

NumPy ile etkili veri işlemede dizi şekillerini verimli bir şekilde manipüle etmek temeldir. Bu öğretici, NumPy dizilerini yeniden şekillendirmek ve boyutlandırmak için iki temel fonksiyonu ele almaktadır: reshape() ve resize(). İşlevselliklerini, ince farklılıklarını ve veri bilimi projelerinizde güvenle kullanabilmenizi sağlamak için en iyi uygulamaları inceleyeceğiz.

İçerik Tablosu

  1. numpy.reshape()
  2. ndarray.reshape()
  3. Paylaşılan Bellek Hususları
  4. numpy.resize()

1. numpy.reshape()

numpy.reshape() fonksiyonu, temeldeki verileri değiştirmeden bir NumPy dizisinin şeklini değiştirmek için çok yönlü bir araçtır. Giriş olarak diziyi ve istenen yeni şekli gerektirir. Çok önemli olarak, yeni şekil orijinal dizinin boyutuyla uyumlu olmalıdır (toplam eleman sayısı değişmeden kalmalıdır).


import numpy as np

arr = np.arange(12)  # [0, 1, 2, ..., 11] dizisi oluşturur
print("Orijinal dizi:n", arr)

reshaped_arr = np.reshape(arr, (3, 4))  # 3x4 matrise yeniden şekillendirme
print("nYeniden şekillendirilmiş dizi:n", reshaped_arr)

#Otomatik boyut hesaplaması için -1 kullanımı
auto_reshape = np.reshape(arr, (-1, 3)) 
print("nOtomatik yeniden şekillendirilmiş dizi:n", auto_reshape)

#Uygunsuz şekiller için Hata Yönetimi
try:
    invalid_reshape = np.reshape(arr, (2,7))
    print(invalid_reshape)
except ValueError as e:
    print(f"nHata: {e}")

2. ndarray.reshape()

ndarray.reshape() metodu, mevcut bir ndarray nesnesi üzerinde doğrudan çalışan alternatif bir yaklaşım sağlar. İşlevselliği numpy.reshape() ile aynıdır; tek fark çağırma yöntemindedir.


arr = np.arange(12)
reshaped_arr = arr.reshape((4, 3))  # Metot çağrısı
print("nYeniden şekillendirilmiş dizi (metot çağrısı):n", reshaped_arr)

3. Paylaşılan Bellek Hususları

Hem numpy.reshape() hem de ndarray.reshape() genellikle yerinde çalışır. Bu, dizinin veri kopyasını oluşturmadıkları anlamına gelir; bunun yerine, temeldeki verilerin görünümünü değiştirirler. Bu oldukça bellek verimlidir. Yeniden şekillendirilmiş dizide yapılan değişiklikler orijinalde ve bunun tersi şekilde yansıtılır. Ancak bu, özellikle orijinal dizinin içeriğini korumak gerekiyorsa dikkatli düşünmeyi gerektirir. Bir kopya oluşturmak için .copy() metodunu kullanın:


arr = np.arange(12)
reshaped_arr = arr.reshape((3,4))
reshaped_arr[0,0] = 99 # Orijinal diziyi de değiştirir!
print("nYeniden şekillendirme değişikliğinden sonra orijinal dizi:n", arr)

arr = np.arange(12)
reshaped_arr_copy = arr.reshape((3,4)).copy() #Bir kopya oluşturur
reshaped_arr_copy[0,0] = 100 # Sadece kopyayı değiştirir
print("nKopya değişikliğinden sonra orijinal dizi:n", arr)

4. numpy.resize()

numpy.resize() fonksiyonu, toplam eleman sayısını koruyan reshape()‘in aksine, bir dizinin boyutunu değiştirme yeteneği sunar. resize() eleman sayısını değiştirebilir. Yeni boyut daha büyükse, dizi sıfırlarla veya tekrarlanan elemanlarla doldurulur. Daha küçükse, elemanlar kırpılır. Önemli olarak, resize() *her zaman* yeni bir dizi döndürür; orijinali yerinde değiştirmez.


arr = np.arange(5)
resized_arr = np.resize(arr, (8,))  # Boyutu 8'e yeniden boyutlandırma
print("nYeniden boyutlandırılmış dizi (sıfırlarla doldurulmuş):n", resized_arr)

resized_arr_2 = np.resize(arr,(2,)) #Boyutu 2'ye yeniden boyutlandırma
print("nYeniden boyutlandırılmış dizi (kırpılmış):n", resized_arr_2)

resized_arr_3 = np.resize(arr, (2,3)) #2x3'e yeniden boyutlandırma, diziyi tekrarlayacak
print("nYeniden boyutlandırılmış dizi (tekrarlanan):n", resized_arr_3)

Bu öğretici, NumPy dizilerinin yeniden şekillendirilmesi ve yeniden boyutlandırılması hakkında kapsamlı bir genel bakış sunmaktadır. Bu tekniklerde ustalaşmak, bilimsel hesaplama ve veri biliminde yetkin veri manipülasyonu için hayati önem taşımaktadır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir