Kazanmak! Python'a yeni başlayanların öğrenmesi gereken 4 huysuz ipucu

Tam metin 3384 Kelimeler, tahmini öğrenme süresi 10 dakika

Kaynak: Unsplash

Python'a yeni başlayanların temellerine hakim olmanın yanı sıra, bazı ipuçlarını ve püf noktalarını anlamak, öğrenmeye giden yolda vazgeçilmez bir katalizördür ve bu da daha iyi öğrenmenize yardımcı olabilir.

Numpy, Python için en popüler kitaplıklardan biridir.Avantajları göz önüne alındığında, hemen hemen her Python programcısı onu aritmetik işlemler için kullanır. Numpy dizileri Python listelerinden daha kompakttır. Kütüphane ayrıca birçok yaygın matris işlemini çok verimli bir şekilde uygular.

Aşağıdaki küçük çekirdek, Python'a yeni başlayanların uygulamaya dayalı olarak öğrenmesi gereken 4 uyuşmuş beceriyi derledi: Daha kısa ve okunabilir kod yazmanıza yardımcı olabilirler.

Numpy becerilerini öğrenmeden önce, lütfen aşağıdaki makalelerde Python'un bazı yerleşik işlevlerine aşina olduğunuzdan emin olun.

1. Dizi seçimini maskeleyin

Veri kümeleri kusurludur, her zaman eksik veya geçersiz kayıt dizilerini içerirler ve bu kayıtlar genellikle göz ardı edilir. Örneğin, sensör arızası nedeniyle, meteoroloji istasyonunun ölçülen değeri eksik değerler içerebilir.

Numpy, maskelenmiş veri dizilerini destekleyen bir alt modül numpy.ma'ya sahiptir. Maskelenmiş dizi, normal bir numpy dizisi ve geçersiz kayıtların konumunu gösteren bir maske içerir.

np.ma.MaskedArray (veri = dizi, maske = geçersiz_mask)

Bazen bir dizideki geçersiz kayıtları işaretlemek için negatif bir değer veya dize kullanılır. -999 gibi maskelenecek değeri biliyorsanız, maskelenmiş bir dizi oluşturmak için np.ma.masked_values (arr, value = -999) da kullanabilirsiniz. Parametre olarak maskelenmiş bir diziyi alan herhangi bir uyuşukluk işlemi, aşağıda gösterildiği gibi, bu geçersiz kayıtları otomatik olarak yok sayacaktır.

matematik ithal etmek

defis_prime (n):

iddia etmek > 1, 'Giriş 1'den büyük olmalıdır'

eğer n% 2 == 0 ve n > 2:

returnFalse

returnall (n% i inrange için (3, int (math.sqrt (n)) +1, 2))

arr = np.array (aralık (2,100))

non_prime_mask =

prime_arr = np.ma.MaskedArray (veri = dizi, maske = non_prime_mask)

baskı (prime_arr)

#

arr = np.array (aralık (11))

baskı (dizi.sum ()) # 55

arr = -999 # eksik değeri gösterir

masked_arr = np.ma.masked_values (arr, -999)

print (masked_arr.sum ()) # 45

by GitHub tarafından barındırılan rawnumpy-ma.py'yi görüntüleyin

2. Yayın Şekli

Kaynak: Unsplash

Yayın, yeni başlayanların istemeden deneyebileceği bir şeydir. Aynı şekle sahip dizi çiftlerine birçok numpy aritmetik işlem uygulanır ve bu dizi çiftlerinin elemanları tek tek çalıştırılır. Yayın, gereksiz verileri kopyalamadan dizi işlemlerini vektörleştirebilir. Bu, etkili algoritma uygulaması ve daha yüksek kod okunabilirliği sağlar.

Örneğin, dizi boyutuna bakılmaksızın dizideki tüm değerlere 1 eklemek için arr + 1'i kullanabilirsiniz. Ayrıca arr'ı da geçebilirsiniz > 2 Dizideki tüm değerlerin 2'den büyük olup olmadığını kontrol edin.

Ama iki dizinin yayınla uyumlu olup olmadığını nasıl anlarsınız?

Bağımsız değişken 1 (4D dizisi): 7 × 5 × 3 × 1

Bağımsız değişken 2 (3B dizisi): 1 × 3 × 9

Çıkış (4D dizisi): 7 × 5 × 3 × 9

İki dizinin her boyutu eşit olmalı veya bunlardan biri 1 olmalıdır. Aynı sayıda boyuta sahip olmaları gerekmez. Yukarıdaki örnek bu kuralları göstermektedir.

3. Arg işlevi konumu

Bir dizi dizi için, np.argmax (arr), np.argmin (arr) ve np.argwhere (koşul (arr)), sırasıyla kullanıcı tanımlı koşulu karşılayan maksimum değeri, minimum değeri ve değerin dizinini döndürür. Bu arg işlevleri yaygın olarak kullanılsa da, diziyi sıralamak için dizini döndüren np.argsort () işlevini genellikle yok sayarız.

Bir dizinin değerlerini başka bir diziye göre sıralamak için np.argsort'u kullanabilirsiniz. Aşağıdaki örnek, öğrenci adlarını sıralamak için test puanlarını kullanır. Sıralı ad dizisini orijinal sırasına dönüştürmek için np.argsort (np.argsort (score)) da kullanabilirsiniz.

skor = np.array ()

isim = np.array ()

sıralanmış_name = ad

# puanlarının artan sırasına göre bir dizi isim

baskı (sıralanmış_name)

#

orijinal_adı = sıralı_adı

baskı (orijinal_adı)

#

% timeit adı

# 1.83 µs ± 182 ns döngü başına

(ortalama ± std. sapma 7 çalıştırma, her biri 100000 döngü)

% timeit sıralandı (zip (puan, ad))

Döngü başına # 3.2 µs ± 76.7 ns

(ortalama ± std. sapma 7 çalıştırma, her biri 100000 döngü)

GitHub tarafından 'da barındırılan rawnumpy-argsort.py'yi görüntüleyin

Performansı, yerleşik Python işlevini (zip ()) kullanmaktan daha hızlıdır ve daha okunabilirdir.

4. Elipsis ve Yeni Eksen Boyutları

Kaynak: Unsplash

Bir numpy dizisini bölmek için sözdizimi i: j'dir, burada i ve j sırasıyla başlangıç dizinini ve bitiş dizinini temsil eder. Bir numpy dizisi için arr = np.array (range (10)), arr çağrısı dönecektir.

Yüksek boyutlu dizilerle uğraşırken, her eksenin tüm dizinlerini seçmek için kullanabilirsiniz. Birden çok eksendeki tüm dizinleri seçmek için ... öğesini de kullanabilirsiniz. Buradan, genişleme eksenlerinin tam sayısı çıkarılabilir.

arr = np.array (range (1000)). reshape (2,5,2,10, -1)

baskı (arr == arr)

#,

# ,

# ,

# >,

#,

# ,

# ,

# ,

# >>)

baskı (dizi şekli) # (2, 5, 2, 10, 5)

baskı (dizi şekli) # (2, 5, 1, 2, 10, 5)

Rawnumpy-slicing.py'yi by GitHub'da barındırılan görüntüleyin

Öte yandan, kullanıcı tanımlı bir eksen konumuna yeni bir eksen eklemek için yukarıda gösterildiği gibi np.newaxis kullanın. Bu işlem, dizinin şeklini bir boyut birimi kadar genişletir. Bu np.expand_dims () ile de elde edilebilmesine rağmen, np.newaxis kullanımı daha okunaklı ve daha zariftir.

Kaynak: Unsplash

Hepinizin kod yazarak eğlenmeye devam etmesini diliyorum ~ her gün daha da güçleniyor ~

Yorum Beğen Takip Et

Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

Bugün Xinsheng | Wuhan'ın trafiği bugün saat 10'dan durdurulacak ve havaalanı ve tren istasyonu Han'a kapatılacak
önceki
Python öğrenimini daha kolay ve daha mutlu hale getirmek için ilerleme çubuğunu kullanın
Sonraki
UIUC Luo Yunan: Yapay Zeka Destekli Bilimsel Keşif
Süper zeka ile yapay zeka tanrı benzeri bir paranoyaya mı dönüşecek?
Bugün Xinsheng | Aç mısınız: Maskelerin fiyat artışına kararlılıkla karşı çıkın! Doldurmak için elinizden geleni yapın
Kılık değiştirip, maskeyi çıkarır mısınız? Duygu algılama teknolojisi duygularınızı görünmez kılıyor mu?
Metaflow: Netflix'in Python / R veri bilimi çerçevesi
Dong Yinpeng, Tsinghua Üniversitesi: Derin Öğrenmenin Tartışmalı Sağlamlığı
Çocuklar pornografik suçların en çok zarar gördüğü alan haline geliyor
Bugün Core Voice | Boeing Müşterisi: 737 Max'in itibarı kötü ve tamamen terk edilmeli
Konteyner bileşenlerini uygulamak için React Hook'lar nasıl kullanılır?
Büyük teknoloji şirketleri bizim için geliyor! Ama durabiliriz
AI, Guanyin Bodhisattva'yı güçlendiriyor, mekanik ilahiler daha etkili olacak mı?
Fudan Guitao: NLP, bilgisayar ve ağ dili arasında bir köprü kurmak için Sosyal Medya ile buluştuğunda
To Top