NumPy linspace(): Eşit Aralıklı Sayı Dizileri Nasıl Oluşturulur
Yayınlanan: 2022-04-11Bu eğitim size Python'da bir dizi eşit aralıklı sayı oluşturmak için NumPy linspace() 'i nasıl kullanacağınızı öğretecektir.
NumPy linspace()
sözdizimini öğrenecek ve ardından onu nasıl kullanacağınızı anlamanıza yardımcı olacak örnekleri öğreneceksiniz.
Not: Bu öğreticiyi takip etmek için Python ve NumPy'nin kurulu olması gerekir.
Henüz NumPy'niz yok mu? Sizin için hızlı bir kurulum rehberi hazırladık.
Hadi başlayalım!
NumPy'yi yükleyin ve içe aktarın
Öğreticiye başlamadan önce, NumPy kitaplığını kurma adımlarını hızlıca gözden geçirelim.
NumPy'yi zaten yüklediyseniz, bir sonraki bölüme geçmekten çekinmeyin.
- Bulut tabanlı bir Jupyter not defteri ortamı olan Google Colab kullanıyorsanız, NumPy'yi içe aktarabilir ve hemen kodlamaya başlayabilirsiniz. (bu eğitim için önerilir)
- Yerel bir çalışma ortamı kurmak istiyorsanız Python'un Anaconda dağıtımını yüklemenizi öneririm. Anaconda, önceden yüklenmiş birkaç kullanışlı paketle birlikte gelir. İşletim Sisteminiz için yükleyiciyi indirebilirsiniz. Kurulum işlemi sadece birkaç dakika sürer.
- Bilgisayarınızda zaten Python yüklüyse, yine de Anaconda dağıtımını yükleyebilirsiniz. Paketleri kurmak ve yönetmek için conda veya pip kullanabilirsiniz. NumPy'yi yüklemek için Anaconda Komut İsteminden aşağıdaki komutlardan birini çalıştırabilirsiniz.
# Install NumPy using conda conda install numpy # Install NumPy using pip pip install numpy
Bir sonraki adım olarak, aşağıdaki komutu çalıştırarak numpy
np
takma adı altında içe aktarın. Bunu yapmak, modüldeki bir öğeye her eriştiğinizde numpy
yazmak zorunda kalmadan NumPy'ye np
olarak başvurmanıza yardımcı olacaktır.
import numpy as np
İleride, NumPy kitaplığındaki tüm işlevlere şu şekilde erişmek için nokta gösterimini kullanacağız: np.<func-name>
.
Eşit Aralıklı Sayılar İçin Durum
NumPy dizileriyle çalışırken, bir aralıkta eşit aralıklı sayılar dizisi oluşturmanız gereken zamanlar vardır.
Daha ileri gitmeden önce, np.arange()
benzeri başka bir işlevi hızlıca gözden geçirelim.
NumPy linspace() ile NumPy arange() karşılaştırması
NumPy'yi daha önce kullandıysanız, belirli bir aralıkta bir sayı dizisi oluşturmak için büyük olasılıkla np.arange()
kullanırdınız.
np.arange(start, stop, step)
step
start
stop
döndürdüğünü biliyorsunuz; varsayılan adım boyutu 1'dir.
Ancak, adımın değeri her zaman açık olmayabilir. Bunun neden böyle olduğunu görelim.
Örneğin, 0 ile 1 arasında eşit aralıklı 4 sayıya ihtiyacınız varsa, adım boyutunun 0,25 olması gerektiğini bilirsiniz. Ancak np.arange()
kullanıyorsanız, 1'in durma değerini içermez. Bu nedenle, durma değerinin ötesine geçen bir aralık seçmeniz gerekecektir.
Aşağıdaki görüntü, [a, b] aralığında belirli sayıda eşit aralıklı noktaya ihtiyaç duyduğunuz birkaç örneği daha göstermektedir.
[0,1]'deki ilk 4 eşit aralıklı nokta örneğimiz yeterince kolaydı. Noktalar arasındaki adım boyutunun 0,25 olması gerektiğini biliyorsunuz.
Diyelim ki 1 ile 33 arasında eşit aralıklı 7 nokta listelemeniz gereken biraz daha kapsamlı bir örneğiniz var. Burada adım boyutu hemen çok net olmayabilir. Ancak bu durumda step
değerini manuel olarak hesaplayabilirsiniz.
Ancak, np.linspace()
sizin için daha da basit hale getirmek için burada!
np.linspace()
kullanırken, adım boyutu hakkında endişelenmeden yalnızca aralıktaki nokta sayısını belirtmeniz gerekir. Ve diziyi istediğiniz gibi geri alacaksınız.
Bu motivasyonla, bir sonraki bölümde NumPy linspace()
sözdizimini öğrenmeye devam edelim.
NumPy linspace() sözdizimi
NumPy linspace()
kullanımı için sözdizimi aşağıda gösterilmiştir:
np.linspace(start, stop, num, endpoint, retstep, dtype, axis)
Başlangıçta, yukarıdaki sözdizimi birçok parametreyle çok karmaşık görünebilir.
Ancak bunların çoğu isteğe bağlı parametrelerdir ve birkaç dakika içinde çok daha basit bir sözdizimine ulaşacağız.
Şimdi yukarıdaki sözdizimini ayrıştırarak başlayalım:
-
start
vestop
sırasıyla aralığın başlangıç ve bitiş noktalarıdır. Hem başlatma hem de durdurma, skaler veya dizi olabilir. Bu eğitimde kendimizi skaler başlangıç ve bitiş değerleriyle sınırlayacağız. -
num
, eşit aralıklı noktaların sayısıdır. Ve varsayılan değeri 50 olan isteğe bağlı bir parametredir. -
endpoint
ayrıca True veya False olabilen isteğe bağlı bir parametredir. - Varsayılan değer True'dur; bu, bitiş noktasının varsayılan olarak aralığa dahil edileceği anlamına gelir. Ancak, bitiş noktasını hariç tutmak için bunu False olarak ayarlayabilirsiniz.
-
retstep
, Boolean'ları True veya False alan başka bir isteğe bağlı parametredir. True olarak ayarlandığında, adım değeri döndürülür. -
dtype
, dizideki sayıların veri türüdür. Tür genellikle kayan nokta olarak anlaşılır ve açıkça belirtilmesi gerekmez. -
axis
, sayıların saklanması gereken ekseni belirten isteğe bağlı başka bir parametredir. Ve bu, yalnızcastart
vestop
değerleri dizilerin kendileri olduğunda geçerlidir.
️ Peki np.linspace()
ne döndürür?
Eşit aralıklı sayıların N boyutlu bir dizisini döndürür. Ve retstep
parametresi True
olarak ayarlanırsa, adım boyutunu da döndürür.
Şimdiye kadarki tartışmaya dayanarak, np.linspace()
kullanmak için basitleştirilmiş bir sözdizimi:
np.linspace(start, stop, num)
Yukarıdaki kod satırı,
[start, stop]
aralığındanum
eşit aralıklı sayıların bir dizisini döndürür.
Artık sözdizimini bildiğinize göre, kodlama örneklerine başlayalım.
NumPy linspace() ile Eşit Aralıklı Diziler Nasıl Oluşturulur
#1. İlk örneğimiz olarak, [1, 5] aralığında 20 eşit aralıklı sayıdan oluşan bir dizi oluşturalım.
Anahtar sözcük bağımsız değişkenleri olarak start
, stop
ve num
değerlerini belirtebilirsiniz. Bu, aşağıdaki kod hücresinde gösterilmiştir:
import numpy as np arr1 = np.linspace(start = 1,stop = 5,num = 20) print(arr1) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ]
Her iki uç nokta da dahil olmak üzere dizideki sayıların nasıl 1'de başlayıp 5'te bittiğine dikkat edin. Ayrıca, döndürülen dizide 1 ve 5 noktaları da dahil olmak üzere sayıların float
olarak nasıl temsil edildiğini gözlemleyin.
#2. Önceki örnekte, start
, stop
ve num
değerlerini anahtar kelime argümanları olarak iletmiştiniz. Argümanları doğru sırayla iletirseniz, bunları aşağıda gösterildiği gibi yalnızca değerlerle konumsal argümanlar olarak da kullanabilirsiniz.
import numpy as np arr2 = np.linspace(1,5,20) print(arr2) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ]
#3. Şimdi retstep
True
olarak ayarladığımız başka bir dizi oluşturalım.
Bu, işlevin şimdi hem diziyi hem de adımı döndüreceği anlamına gelir. Bunları arr3
: dizi ve step_size
: döndürülen adım boyutu olmak üzere iki değişkene açabiliriz.
Aşağıdaki kod hücresi bunu nasıl yapabileceğinizi açıklamaktadır.
import numpy as np arr3, step_size = np.linspace(1,5,20,retstep = True) print(arr3) # Output: [1. 1.21052632 1.42105263 1.63157895 1.84210526 2.05263158 2.26315789 2.47368421 2.68421053 2.89473684 3.10526316 3.31578947 3.52631579 3.73684211 3.94736842 4.15789474 4.36842105 4.57894737 4.78947368 5. ] # Output: print(step_size) 0.21052631578947367
#4. Son bir örnek olarak, endpoint
False
olarak ayarlayalım ve ne olduğunu kontrol edelim.
import numpy as np arr4 = np.linspace(1,5,20,endpoint = False) print(arr4) # Output: [1. 1.2 1.4 1.6 1.8 2. 2.2 2.4 2.6 2.8 3. 3.2 3.4 3.6 3.8 4. 4.2 4.4 4.6 4.8]
Döndürülen dizide 1'in dahil olduğunu, 5'in dahil olmadığını görebilirsiniz. Ve dizideki son değer 4.8 olur ama elimizde hala 20 sayı var.
Şimdiye kadar, yalnızca eşit aralıklı sayı dizileri oluşturduk. Bir sonraki bölümde, bu sayıları çizerek görselleştirelim.
Bir Aralıkta Eşit Aralıklı Sayılar Nasıl Çizilir
Bu bölümde ilgi aralığı olarak [10,15] seçelim. Ardından, her biri sırasıyla 8 ve 12 noktalı iki dizi oluşturmak için np.linspace()
'i kullanın.
Bu tamamlandıktan sonra, onları çizmek için matplotlib
kitaplığındaki çizim işlevini kullanabiliriz.
Anlaşılır olması için, N1 = 8 ve N2 = 12 eşit aralıklı iki nokta dizisini y ekseni boyunca farklı konumlarda kenetleyeceğiz.
Aşağıdaki kod parçası bunu göstermektedir.
import numpy as np import matplotlib.pyplot as plt N1 = 8 N2 = 12 a = 10 b = 15 y1 = np.zeros(N1) y2 = np.zeros(N2) x1 = np.linspace(a, b, N1) x2 = np.linspace(a, b, N2) plt.plot(x1, y1-0.5, 'o') plt.plot(x2, y2 + 0.5, 'o') plt.ylim([-1, 1]) plt.title(f'Evenly Spaced Numbers in the Interval [{a},{b}]') plt.xlabel('Interval') plt.show()
Eşit aralıklı noktalar oluşturmak, matematiksel işlevlerle çalışırken yardımcı olabilir. Bunu bir sonraki bölümde öğreneceğiz.
NumPy linspace() Matematik İşlevleriyle Nasıl Kullanılır
np.linspace()
kullanarak eşit aralıklı sayılar dizisi oluşturduktan sonra, aralıktaki matematiksel işlevlerin değerlerini hesaplayabilirsiniz.
Aşağıdaki kod hücresinde, önce 0 ila 2π aralığında 50 eşit aralıklı nokta oluşturursunuz. Ardından x
dizisinde np.sin()
kullanarak y
dizisini oluşturun. Varsayılan değer 50 olduğundan, num
parametresini atlayabileceğinizi unutmayın. Bunu açık bir şekilde kullanmaya devam edeceğiz.
Bir sonraki adım olarak, sinüs fonksiyonunu [0, 2π] aralığında çizebilirsiniz. Bunu yapmak için önceki örnekte olduğu gibi matplotlib'i kullanabilirsiniz. Özellikle, matplotlib.pytplot
içindeki plot()
işlevi, bir çizgi grafiği oluşturmak için kullanılır.
import numpy as np import matplotlib.pyplot as plt N = 50 a = 0.0 b = 2*np.pi x = np.linspace(a, b, N) y = np.sin(x) plt.plot(x, y, marker = "o") plt.ylim([-1, 1]) plt.title(f'y = sin(x)') plt.xlabel('x ---->') plt.show()
Şimdi, N
10'a eşitleyerek yukarıdaki kodu çalıştırın. Aşağıdaki şekilde gösterildiği gibi grafiği elde edeceksiniz.
Ve arsanın çok düzgün olmadığını görebilirsiniz - aralıkta sadece 10 puan seçtiğiniz için.
Genel olarak, göz önünde bulundurduğunuz nokta sayısı ne kadar fazlaysa, fonksiyonun çizimi o kadar düzgün olacaktır.
Çözüm
İşte öğrendiklerimizin bir özeti.
- np.linspace(start, stop, num), [start, stop] aralığında num eşit aralıklı sayıların bir dizisini döndürür.
- Stop öğesini hariç tutmak için isteğe bağlı parametre bitiş noktasını False olarak ayarlayın ve aralığı [start, stop) olarak ayarlayın.
- Adım boyutunu elde etmek için isteğe bağlı olarak retstep'i True olarak ayarlayın.
- np.linspace() kullanarak eşit aralıklı diziler oluşturun ve ardından diziyi matematiksel işlevlerle kullanın.
Umarım şimdi np.linspace()'in nasıl çalıştığını anlamışsınızdır. Yukarıdaki örnekleri Jupyter not defterinde çalıştırmayı seçebilirsiniz. Jupyter dizüstü bilgisayar kılavuzumuza veya göz önünde bulundurabileceğiniz diğer Jupyter alternatiflerine göz atın.
Yakında başka bir Python eğitiminde görüşmek üzere. O zamana kadar kodlamaya devam!