NumPy Dizisini Yeniden Şekillendirme


Dizileri yeniden şekillendirme

Yeniden şekillendirme, bir dizinin şeklini değiştirmek anlamına gelir.

Bir dizinin şekli, her boyuttaki eleman sayısıdır.

Yeniden şekillendirerek boyut ekleyebilir veya kaldırabilir veya her boyuttaki eleman sayısını değiştirebiliriz.


1-D'den 2-D'ye Yeniden Şekillendirin

Örnek

Aşağıdaki 12 elemanlı 1 boyutlu diziyi 2 boyutlu diziye dönüştürün.

En dıştaki boyut, her biri 3 elemanlı 4 diziye sahip olacaktır:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

1-D'den 3-D'ye Yeniden Şekillendirin

Örnek

Aşağıdaki 1 boyutlu diziyi 12 elemanlı bir 3 boyutlu diziye dönüştürün.

En dıştaki boyut, her biri 2 elemanlı 3 dizi içeren 2 diziye sahip olacaktır:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)


Herhangi Bir Şekilde Yeniden Şekillendirebilir miyiz?

Evet, yeniden şekillendirme için gerekli elemanlar her iki şekilde de eşit olduğu sürece.

8 elemanlı 1B diziyi 2 sıra 2B dizide 4 elemana yeniden şekillendirebiliriz, ancak 3x3 = 9 eleman gerektireceğinden onu 3 elemanlı 3 satır 2B diziye yeniden şekillendiremeyiz.

Örnek

8 elemanlı 1B diziyi, her boyutta 3 elemanlı 2B diziye dönüştürmeyi deneyin (bir hataya neden olur):

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

Kopyalama mı Görüntüleme mi?

Örnek

Döndürülen dizinin bir kopya mı yoksa bir görünüm mü olduğunu kontrol edin:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

Yukarıdaki örnek orijinal diziyi döndürür, yani bir görünümdür.


Bilinmeyen Boyut

Bir "bilinmeyen" boyuta sahip olmanıza izin verilir.

Bu, yeniden şekillendirme yönteminde boyutlardan biri için kesin bir sayı belirtmeniz gerekmediği anlamına gelir.

Değer olarak iletin -1, NumPy bu sayıyı sizin için hesaplayacaktır.

Örnek

8 elemanlı 1B diziyi 2x2 elemanlı 3B diziye dönüştürün:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

Not:-1 Birden fazla boyuta geçemeyiz .


Dizileri düzleştirme

Düzleştirme dizisi, çok boyutlu bir diziyi 1B diziye dönüştürmek anlamına gelir.

Bunu yapmak için kullanabiliriz reshape(-1).

Örnek

Diziyi 1B diziye dönüştürün:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

Not: numpy içindeki dizilerin şekillerini değiştirmek ve ayrıca , , , vb. öğelerini yeniden düzenlemek için birçok işlev vardır flatten. Bunlar , numpy'nin ravelOrta Düzeyden Gelişmiş bölümüne girer.rot90flipfliplrflipud


Egzersizlerle Kendinizi Test Edin

Egzersiz yapmak:

Bir dizinin şeklini 1-B'den 2-B'ye değiştirmek için doğru NumPy yöntemini kullanın.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)