2016-03-25 21 views

cevap

5

Sağladığınız bağlantılardan, burada bazı karışıklıklara ve aşağıdaki açıklamalara neden olan delete ve glossary numaralı alıntılardan alıntılar alabilirsiniz.

  1. alıntı
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) 
>>> arr 
array([[ 1, 2, 3, 4], 
     [ 5, 6, 7, 8], 
     [ 9, 10, 11, 12]]) 
>>> np.delete(arr, 1, 0) 
array([[ 1, 2, 3, 4], 
     [ 9, 10, 11, 12]]) 

ilk olarak aşağı doğru dikey olarak uzanan Acros

  • alıntı s satır (eksen 0), ve ikinci sütun boyunca yatay (eksen 1)


  • I karışıklık kelime ikinci alıntıda dikey ve yatay türemiştir düşünüyorum. İkinci alıntı aracının anlamı, axis ayarı ile, hangi boyutun hareket edeceğine karar vermektir. Örneğin, 2d'lik bir matriste, axis=0 satırların üzerinde yinelemeye karşılık gelir (böylece dizinin üzerine dikey olarak hareket eder), axis=1 ise sütunları yinelemeye karşılık gelir (böylece dizinin üzerinde yatay olarak hareket eder). axis=1, OP'nin anladığı gibi yatay eksene karşılık geldiği anlamına gelmez.

    delete fonksiyon satırların üzerine np.delete(arr, 1, axis=0), fonksiyon dolaşır kullanarak, hem gerçekten de yukarıdaki açıklamayı takip ve yerine, kolonlar sonra axis=1, silinmesi gerektiğini olursa endeksi 1. bulunduğu satırı siler. Örneğin, aynı dizinin delete sütun üzerinde dolaşır ve endeks 0 ile sütun, 1 silinir, ve başka bir şey yoktur indeksi 4 sütunu olarak silindiği arr

    >>> np.delete(arr, [0,1,4], axis=1) 
    array([[ 3, 4], 
         [ 7, 8], 
         [11, 12]]) 
    

    ile.

    +0

    Net ve doğrudan. Güzel. – Reti43

    5

    Bir dizi, herhangi bir boyutluluğun ızgaralarındaki sayıları sistematik bir şekilde yapılandırmaktır. Izgara yönleri etiketlere sahiptir ve bu etiketler yeni boyutların bir kılavuza nasıl eklendiğine dair bir sözleşmeden gelmektedir.

    Burada kongre verilmiştir:

    basit bu ızgara no axes sahiptir ve yalnızca bir skaler tutabilecek bir 0-boyutlu (0D) dizidir. Biz bir liste halinde skalarlar koyarak başlatırsanız

    42 
    

    biz 1D dizi olsun: Bu 0D dizidir.Bu yeni ızgara sadece bir eksene sahiptir ve eğer bu ekseni bir sayı ile etiketlemek istiyorsak, basit bir şeyle daha iyi başlarız - axis=0! Bir 1D dizi olabilir:

    # ----0---> 
    [42, π, √2] 
    

    Şimdi bize bir 2D dizi verecektir 1D diziler içeren bir dizi oluşturmak istiyoruz. Yatay eksen hala 0 olacaktır, ancak yeni dikey eksen bildiğimiz bir sonraki en düşük sayıyı alacaktır, axis=1. İşte nasıl görünebilir:

    # ----0----> 
    [[42, π, √2], # | 
    [1, 2, 3], # 1 
    [10, 20, 30]] # V 
    

    Gerçek güzellik, bu, sonsuzluğa doğru genellenmesidir. Bir kutu sayısına ihtiyacımız varsa, 2D dizileri istifleyerek bir 3B dizi oluşturabiliriz ve kutunun derinliğini izleyen yön doğal olarak axis=2 olmalıdır. Bir 4D dizisi istediğimizde, kutuların bir listesini (3D dizileri) yapardık ve axis=3 boyunca bir dizin kullanarak her kutuyu arardık. Bu sonsuza kadar devam edebilir.

    numpy olarak

    :

    bir axis -argument alır herhangi bir fonksiyon/metot, bu kuralı kullanır. Bir 2B dizi için bu, satır 1, 2 ve 3 olmadan dönmek için 012. ekseninde ekstrüde edilmiş diziler üzerinde np.delete(X, [1, 2, 3], axis=0) gibi bir şey yapmanın yineleneceği anlamına gelir. Aynı mantık, bir diziden değerler almak için de geçerlidir.

    X[rows_along_0th_axis, columns_along_1st_axis, ..., vectors_along_nth_axis] 
    
    +0

    Güzel! Bununla birlikte, yazım, uyuşmazlık üzerinde kafa karıştırıcı olabileceğinden açıklığa kavuşturulmalıdır. Gözden geçirilmek için 2 puan gerekiyor. İlk kongre hakkında: 'eksen = 0 'sütunların üzerinde yinelemeye karşılık gelen tek durum, dizi tek bir liste olduğunda (örn.' Np.array ([1,2,3,4]) '). Genel olarak, 'eksen 'yinelemek için gerçek boyuta karşılık gelir. Ör., 'Axis = 0', sütunlar üzerinde' axis = 1' iken satırların üzerinde yineleme yapılmasına izin verir. Bir matrisin şekli '(num_rows, num_cols)' dır. İkincisi, "numpy" dizisine erişimdir: matris satırları üzerinden indices_axis_0 ve sütunlar indices_axis_1 ile erişilebilir. – albertoql

    +0

    Yorumunuz için teşekkürler! Haklısın. "İkincisi, numpy dizisine erişimdir: bir matris satırı üzerinden indices_axis_0 ve sütunlar indices_axis_1 ile erişilebilir." –

    +0

    'X [index_on_1st_axis, index_on_0th_axis]' ı tanımladığınız kuralı doğru olsa da, 'axis' ifadesinin numpy'ye bakarak tersine, yani 'X [index_on_0th_axis, index_on_1st_axis] 'olmalıdır. Aslında örneğin np.array ([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) 'i, şeklini alır (3,4) 0 ekseninde maksimum indeks 2 (satır) ve eksen 1 üzerinde maksimum indeks 3 (sütun). Bu açıklama benim yorumumdaki ilk noktadan kaynaklanıyor. – albertoql

    İlgili konular