NumPy projesi

Bu sayfada, Google Dokümanlar Sezonu için kabul edilen bir teknik yazım projesinin ayrıntıları yer almaktadır.

Proje özeti

Açık kaynak kuruluşu:
NumPy
Teknik yazar:
cooperrc
Projenin adı:
Topluluk Eğitimi için NumPy Dokümanları
Proje uzunluğu:
Standart uzunluk (3 ay)

Proje açıklaması

Giriş

NumPy, ücretsiz bir açık kaynak yazılım kitaplığında dizi tabanlı temiz ve hızlı hesaplama sunar. Bilimsel hesaplama için SciPy paketinde temel bir pakettir [1]. 370 binden fazla proje, verimli dizi bilişimi için kullanılıyor [2]. NumPy kullanıcılarını, uygulamalar ve örnek olaylar içeren yeni bir web sitesi karşılıyor [1]. Yeni bir kullanıcı doküman sayfasını bulduğunda birden fazla "Burada Başlayın" bağlantısı ve NumPy Temelleri/bayt değiştirme gibi yeni başlayanlar için bunaltıcı olabilecek giriş eğitimleri ile karşılaşır. NumPy'yi on yıl önce lisansüstü okulda kullanmaya başladım. NumPy dokümanlarını incelememek için blog yayınlarını, konferans notlarını ve StackExchange yanıtlarını bir araya getirmeye başladım. Şu anda NumPy ile ilgili 360 binden fazla StackExchange görüşmesi var. NumPy'de başarılı olan diğer kullanıcıların da benzer yollardan geçtiğini düşünüyorum. Eğitim araçlarının yapı taşları iletişim ve topluluktur [4]. Belgeler, projenin istenen hedeflerini yansıtan bir topluluk oluşturmalıdır. Dokümanlar, yeni kullanıcılar için tutarlı ve net bir rehber olmalıdır. Eğiticiler, yeni kullanıcıların kolayca takip edebileceği adımlara sahip olmalı ve kullanıcı kitaplığını rahatlatmalıdır [3]. Dokümanlar, NumPy topluluğuna yeni katılan kullanıcıları karşılamalıdır. Belgelerin yapısı, hızı ve yazarları, keşfetmeyi ve iletişimi teşvik eden bir yer oluşturmalıdır. Bu teklif, yeni kullanıcıların eğitilmesi ve topluluğa kabul edilmesi için mevcut NumPy dokümanlarını düzenleyip boşlukları dolduracaktır.

Kullanıcıların iletişim kurduğu bilgiler test ve deneylerle kazanılır [4,5]. Bilgi, test ve değerlendirme yöntemine bağlıdır. Nasıl yapılır içeriklerinde net hedefler ve uygulamalar sunan içerikler, kullanıcıların yeni fikirleri ve yöntemleri test edip değerlendirmesine olanak tanır. Topluluk, becerileri, gerçekleri ve uygulamaları geliştirmek için bir bilgi tabanı oluşturabilir. Nasıl yapılır? alanı iki açıdan avantaj sağlar. İlk olarak, yeni ve deneyimli kullanıcıların test edip deneme oluşturmak için net bir dizi hedefi vardır. İkinci olarak, dokümanlara katkıda bulunabilecek kullanıcılar hedeflerini, yöntemlerini ve çözümlerini paylaşabilecekleri bir alana sahip olur. Nasıl yapılır alanı, NumPy'nin dokümanlarını yeni kullanıcılar ve olası katkıda bulunanlar için daha erişilebilir hale getirme ihtiyacını karşılıyor. Mevcut Bilgi

John Dewey, öğrenmenin temelinin gerçek bir deneyim olduğunu söylemiştir [4]. NumPy topluluğu, diğer kullanıcılarla paylaşılabilecek çok sayıda gerçek deneyime sahiptir. Eğitim, topluluk ve iletişim üzerine kuruludur. Düzenli bir doküman sayfası, yeni kullanıcıların NumPy'yi deneyimlemesine olanak tanır. Ayrıca, potansiyel katkıda bulunanların NumPy'deki deneyimlerini paylaşmaları için yapılandırılmış bir şablon oluşturur.

Yazılım belgeleri için geniş gruplara ayrılmış dört alan [3] vardır: eğitim alanı, nasıl yapılır alanı, açıklama alanı ve referans alanı. NumPy dokümanlarında, eğitim alanında açıklama ve nasıl yapılır içeriklerini bir araya getiren çeşitli belgeler bulunur. Eğitim alanında kullanıcı eğitimi ön planda tutulmalı ve fikirleri aktarmak için kolayca tekrarlanabilen adımlar kullanılmalıdır. Nasıl yapılır alanı, kullanıcıların gerçek dünyadaki uygulamalarda uygulayabileceği daha hedef odaklı prosedürler sunar. Açıklama alanı, her bir işlevde ayrıntılı bilgi ve doküman dizeleri sağlar. Mevcut eğitim ve nasıl yapılır alanları açık bir şekilde açıklanmıyor ve bazen açıklama ve referans alanına giriyor. "Tamamen Yeni Başlayanlar" için mükemmel bir eğitim ve Matlab kullanıcılarının NumPy kodu oluşturması için "Matlab kullanıcıları için Numpy" başlıklı mükemmel bir referans var. Bu dört alanın net bir şekilde tanımlanması, dokümanları daha anlaşılır hale getirir.

Bilgi Tabanı/Karşılanmayan İhtiyaç Boşluğu

Mevcut dokümanlar birçok gerekli konuyu kapsamaktadır ancak eğitim, nasıl yapılır, açıklama ve referans alanları arasında net bir ayrım yoktur. Bu durum, potansiyel katkıda bulunanların kafasını karıştırır. Yeni kullanıcılar, eğitim bölümündeki açıklama ve referans materyallerinden bunalabiliyor ve potansiyel katkıda bulunanlar, katkıda bulunma konusunda zorluklarla karşılaşıyor. Yeni gelenler ve dokümanlara katkıda bulunabilecek kullanıcılar için daha erişilebilir bir düzen öneriyorum. Bu düzende, dokümanlar mantıklı bir akışa sahip olmalı ve yeni katkıda bulunan kullanıcılar tarafından oluşturulan nasıl yapılır dokümanları için çekme isteklerinin yönetimi sağlanmalıdır. Uzun vadeli hedefim, dokümanlardan öğrenmenin karşılıklı bir eğitim ve iletişim deneyimi olmasını sağlayacak bir doküman topluluğu oluşturmaktır. Belgelendirme için bu model, yeni gelenler ve potansiyel katkıda bulunanlar için eğitimi gerçek deneyime dayandırır.

Gerekçe

Bu Google Yaz Dokümanları Programı teklifi, pedagojik ve kariyer hedeflerim için önemli. Tüm kurslarımda NumPy ve SciPy kullanıyorum. Mevcut dokümanlar öğrencilerin gezinmesi için zor. Bilgisayar bilimi alanından olmayan öğrencilere kodlama eğitimi verme deneyimimden yararlanarak mevcut eğitici içerikleri düzenlemeye, düzenlemeye ve eksiklerini gidermeye yardımcı olmak istiyorum. Ardından, dokümanları kurslarım için ders kitabı ve referans materyali olarak kullanabilirim. Python ve kullanarak onlarca eğitim, alıştırma ve örnek oluşturdum. Bu materyallerin bir kısmını eğitici içeriklere ve "Nasıl yapılır?" makalelerine dönüştürmek istiyorum. 800'den fazla öğrencim NumPy'yi (Scipy yığınının bir parçası olarak) kullandı ve Güz yarıyılında dokümanlara katkıda bulunan olmak isteyen birden fazla öğrencim var. Connecticut Üniversitesi'nde 4 yıldır Mekanik Mühendisliği dersleri veriyorum ve 30'dan fazla kredi saati ders verdim.

Belirli Amaçlar

Bu Google Yaz Dokümanları önerim için üç hedefim var: 1. Mevcut dokümanları düzenleyin, 2. Referans bilgilerini Açıklama Alanı'na taşımak için mevcut eğiticileri (Yeni Başlayanlar İçin Kılavuz, Dizi Oluşturma, Dizine Ekleme, Doğrusal Cebir ve Matlab için NumPy) düzenleyin ve Öğrencilerle birlikte nasıl yapılır? konulu materyaller oluşturun. Her bir amacın teklif için beklenen bir sonucu vardır.

Bu üç hedef, dokümanları yeni kullanıcılar için daha ilgi çekici hale getirmek ve potansiyel katkıda bulunanlara yapı sağlamak amacıyla belirlenmiştir. Bu hedefler, NumPy doküman topluluğunu büyütmeye yönelik uzun vadeli hedefe ulaşmaya da yardımcı olur. Beklenen Sonuçlar

Beklenen üç sonucum var: 1. Dört alanı açıkça ayıran gözden geçirilmiş dokümantasyon web sayfası: eğitici içerikler, nasıl yapılır, açıklama ve başvuru bölümlerinin yanı sıra 2. yeni eğiticiler: dizi okuma ve yazma, dizi oluşturma (np.zeros, np.ones, np.block vb.), NumPy'de öğe tabanlı ve doğrusal cebir işlemi ve 3. seçilmiş bir "nasıl yapılır?" alanı.

Bu beklenen sonuçlar yeni kullanıcıların dokümanlarda ilerlemesine yardımcı olacak, belgeyle katkıda bulunan kullanıcılara net stiller ve biçimler sunacak, mevcut eğitimleri kısaltıp daha kolay takip edilmesini sağlayacak, açıklamaları ayrı bir bölüme taşıyacak ve yeni dokümanlara katkıda bulunanlar, Sfenks dokümanlarının tamamını oluşturmadan "Nasıl yapılır?" bölümüne küçük kullanım alanlarına katkıda bulunabilecekler. Öğretme ve öğrenme topluluğumuzu geliştirmeye devam etmek istiyoruz.

Yeni doküman katkıda bulunanlar, Sphinx dokümanının tamamını oluşturmadan milyonlarca kullanıcıya küçük kullanım alanları sunabilir. Öğretme ve öğrenme topluluğumuzu geliştirmeye devam etmek istiyoruz. Önerilen bu dokümanlar, Matplotlib, Divio gibi mevcut açık kaynak dokümanlarını taklit edecek. Yeni kullanıcılar ve potansiyel katkıda bulunanlar, NumPy'yi kendi alanlarında ve yazılımlarında uygulamayı daha kolay öğrenebilecek.

Projenin zaman çizelgesi 14.9-30.11'dir. İlk adım, dokümanları oluşturmak ve mevcut eğitimlerdeki içeriği Eğitim, Nasıl Yapılır ve Açıklama içeriği olarak ayırmaktır. Bu, projenin ilk beş haftasında 1. ve 2. sonuçlar kapsamında (sırasıyla web sitesini ve eğitici içerikleri gözden geçirerek) yapılacaktır. Önerilen doküman organizasyonu aşağıdaki Önerilen Dokümanlar bölümünde gösterilmektedir.

Önerilen Dokümanlar:

i.Tutorials:

  • Yeni başlayanlar için mutlak temel bilgiler (yüklemeyi kaldır, pandas içe/dışa aktarma numpy.loadtxt ile değiştirilebilir mi?)
  • "What is numpy" bağlantısı
  • Temel yükleme talimatlarının bağlantısı
  • Hızlı Başlangıç Eğitimi (Python eğitiminin devamı niteliğindedir)
  • NumPy dizileriyle çalışma
  • dizi oluşturma (np.zeros, np.ones, np.block vb.) (yazın: orta-düşük öncelik)
  • öğe bazında işlemler (+,-,*,/) ve doğrusal cebir işlemleri (+,-,@, linalg.solve) (yaz:orta öncelik)
  • Numpy kullanarak veri okuma ve yazma (yazma: yüksek öncelik)
  • Dizine ekleme

ii. Nasıl yapılır?

  • n boyutlu dizilerde doğrusal cebir (başlıkları ve açıklamaları düzenlemeyi ve belki de başlığı "Numpy'nin doğrusal cebiriyle görüntü işleme" olarak değiştirmeyi isterim)
  • link to numpy-tutorials how-to content (on-going work)

iii. Açıklama:

  • Veri türleri
  • Numpy ile G/Ç
  • Dizine ekleme
  • Yayımlama
  • Bayt değiştirme
  • Yapılandırılmış diziler
  • Özel dizi container'ları yazma
  • ndarray sınıfını alt sınıfa ayırma
  • Çeşitli

iv. Referans Alanı:

  • Sözlük
  • Numpy API Referansı
  • Matlab kullanıcıları için Numpy (eşdeğerlik tablosu mükemmel bir referans tablosu olsa da dizi/matris tartışması dikkat dağıtıcı ve desteği sonlandırılmış gibi görünüyor)

Bu Google Dokümanlar Sezonunu tamamladıktan sonra aşağıdaki sonuçları teklif ediyorum:

  • Eğitimler, Nasıl Yapılır, Açıklama ve Referans olmak üzere dört alanı net bir şekilde ayıran, düzeltilmiş bir Dokümanlar web sayfası
  • Matris oluşturma (np.zeros, np.ones, np.block vb.), öğe bazında işlemler (+,-,*,/) ve doğrusal cebir işlemleri (+,-,@, linalg.solve) ve Numpy'yi kullanarak veri okuma ve yazma (yüksek öncelik) ile ilgili yeni eğitimler
  • Kullanıcı katkılarını artırmak ve topluluğun eğitim ve öğrenim alanındaki hedeflerine ulaşmasına yardımcı olmak için nasıl yapılır dokümanları önerdi

Her sonucun, Sonuçlar 1-3 tablolarında özetlenen bir dizi adımı vardır. Önerilen dokümanlar incelemeye gönderilirken, 2. sonuç kapsamında çekme isteği olarak gönderilmek üzere yüksek öncelikli "Dizileri okuma/yazma" eğitimi yazılacak. Düzeltilen web sitesi ve güncellenmiş "Dizileri okuma/yazma" eğitimi incelenirken np.ones, np.zeros, np.diag gibi NumPy işlevlerini kullanarak dizi oluşturma eğitimi yazmaya başlayacağım. Kalan süre, çekme isteğinde belirtilen sorunlara yanıt vermek ve 3. sıralı eğitim içeriğini (Python'da öğe bazında ve doğrusal cebir işlemleri) yazmaya başlamak için kullanılacak.

Üçüncü sonuç, Connecticut Üniversitesi'ndeki öğrencilere numpy-tutorials deposunda doküman oluşturmalarını tavsiye etmektir. Gönderilen eğitici içerikler veya kullanım kılavuzları, mühendislik sorunlarını çözmek için NumPy kullanan Jupyter not defterleri olmalıdır. Kurs notlarından/örneklerinden bazılarını örnek bir not defteri göndermek için kullanacağım. Şablon ve çerçeveleme şeması oluştururken öğrencilere düzeni ve yapıyı takip etmelerini önereceğim. Bu sonuç, öğrencilerin kavramları ve çözümleri daha geniş bir kitleye ulaştırmaları için gerçek bir deneyim sunuyor. Öğrencilerin NumPy topluluğuna katılmak ve öğrenmek için harika bir fırsat.

1. Sonuç: Web sitesini düzeltme Teslim Tarihi Depoyu çatallayın ve Sphinx ile doküman oluşturun 21/9 Dört alan tanımlanmış ve bağlanmış şekilde web sayfası oluşturun 1/10 Mevcut eğitimleri uygun alanlara taşıyın ve doküman oluşturun 10/10 Önerilen değişikliklerle birlikte PR'yi GitHub'a gönderin 1/11 Yorumlara/önerilere yanıt verin ve PR'yi düzeltin 2. Sonuç ile devam ediyor Web sitesi düzeltildi 30/11

2. Sonuç: Eğiticileri Gözden Geçirme Tarihi 21 Eylül'de mevcut eğitim içeriğini Eğitim ve Açıklama alanlarına ayırın 10/1 Yazma sırası 1: Okuma/Yazma dizileri 10/10 Ayırma ve düzeltme 10/20 için PR'yi github'a gönderin Sıralama 2: Array Creation/Element1 ve PR 11'i yazın

Eğitim düzeltmeleri için önerilen sıralama (danışmanlara/topluluğa göre değişebilir):

  1. Şu anda boş olan dizileri okuma/yazma sayfası

  2. Dizi oluşturma (np.zeros, np.ones, np.block vb.) Mevcut değil: Yeni kullanıcıların yaygın dizi oluşturma/etkileşim araçlarının açıklanmasına ve gösterilmesine yardımcı olur.

  3. Öğe bazında ve doğrusal cebir işlemleri (+,-,*,/ ve +,-@,linalg.solve) Mevcut değil: Bu özellikle 1 için yararlıdır. Matlab kullanıcıları ve 2. Doğrusal cebiri benimseyen kullanıcılar (makine öğrenimi, doğrusal regresyon vb.)

3. Sonuç: Seçkin bir nasıl yapılır alanı Teslimat Tarihi Harici Bağlantı(sorunu/örnek) Nasıl yapılır örneği oluşturma (aday: Gitar tellerinin doğal frekanslarını bulma 20/10
Yeni katkıda bulunanlar için nasıl yapılır şablonu oluşturma 1/10 devam ediyor Eğitim şablonu PR ve Olası Katkılar Çerçevelendirme UConn öğrencilerini ve diğer topluluk üyelerini işe alan nasıl yapılır not defterleri oluşturmak için diğer katkıda bulunanlarla birlikte çalışma 1/7 durum: iş-eğitim onaylandı ve başvurular geliyor

Beklenen Anlamlılık

Bu Google Yaz Dokümanları önerisi , NumPy dokümanlarını oluşturacak, web sitesinde eksik olan eğitimleri tamamlayacak ve dokümanlara katkıda bulunanlar kazanacaktır. Mekanik Mühendisliği profesörü olarak, dokümanları öğrencilerimin dokümanlarda gezinebileceği ve giriş derslerini ile uygulamalı kullanım kılavuzlarını kolayca bulabileceği şekilde segmentlere ayırmayı planlıyorum. Bölümlere ayrılmış dokümanlar (eğitim, nasıl yapılır, referans ve açıklama) yeni kaynaklar oluşturmak için potansiyel katkıda bulunan kullanıcılara yönelik yapılandırılmış örnekler sunar. Teklif edilen belgeler, yeni ve deneyimli kullanıcılar için eğitici ve etkileşimli bir deneyim sunar. Connecticut Üniversitesi'ndeki öğrencilere yönelik olarak önerilen "nasıl yapılır?" dokümanı, bu eğitim ve iletişim fikrini uygulamaya geçirecek. Tüm kullanıcıların deneme yapma, öğrenme ve NumPy topluluğuna katılma fırsatı bulmasını istiyoruz.

Referanslar

  1. NumPy.org web sitesine 07/2020'de erişildi.
  2. NumPy GitHub deposu.
  3. Belgelendirme Sistemi. Divio.com erişim tarihi: 07/2020.
  4. Dewey, John. Democracy and Education. Project Gutenberg, Ağustos 2015.
  5. Dewey, John. Quest for Certainty George Allen And Unwin Limited. 06/2005.