Numpy Array , Shape Konusu

Arkadaşlar merhaba , bu shape komutu hakkında merak ettiğim birşey var örnekle açıklayayım.

import numpy as np

a=np.array([1,2,3])

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

print(a.shape)

print(b.shape)

bunun çıktısı olarak

(3,)
(2, 3)

bunu veriyor , şimdi shape komutunda satır-sütün bilgisi verdiğini biliyorum. b değişkeninde 2 satır 3 sütündan oluşuyor onda bir sıkıntım yok ama a değişkeninde 3 olarak satır bilgisi mi veriyor ben mi yanlış anlıyorum? Sonuçta tek bir satır yok mu? Yani (,3) gibi birşey olması lazım değil mi?

Merhaba.

Anladığım kadarıyla shape 'in birinci dönüş parametresi satır sayısını, ikinci satırı sütun parametresi döndürüyor.

import numpy as np

a=np.array([[1,2,3]])

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

c = np.array([[1],[1],[1]])

print(a.shape)

print(b.shape)

print(c.shape)

Örneğinize 1 elemanlı üç satır ekledim. Dönüşü (3,1) oldu yani 3 satır 1 sütun

siz tek bir array vermişsiniz bu da 3 satır olarak yorumlanmış.

yani tek boyutlu bir dizi verdiğinizde bunların her birini tek bir satır olarak yorumluyor.

Bu konuda şahsi görüşüm.

shape fonksiyonu ile çok boyutlu bir matris/matrix oluşturmak için bir liste gönderdik.

Liste de 3 elemanlı.

Burada metod. Madem çok boyutlu istiyor, ben de bunu çok boyutlu bir vektöre dönüştüreyim.

Bu durumda 1 elemanlı, 3 satırlı bir vektör dönüşümünün sonucu dönüyor gibi duruyor.

1 Beğeni

numpy array’leri N boyutlu oldugundan (isimleri de ndarray hatta) satir-sutun olarak dusunmemek lazim. (3,) tek elemanli bir tuple, “(3)”. (tuple([3]), tuple({3}), …). , ile yazilmasinin sebebi paranteze alinmis 3 ile karistirilmamasi. (,3) diye bir sey yok (veya (3,) ile ayni sey.)

Iki boyutta dusundugun (1, 3) ve (3, 1) . Her ikisi de tek boyutlu bir (3) array’inden kolayca uretilebilir. (reshape) Tipki (3, 1, 1), (1, 3, 1) ve (1, 1, 3) gibi.

>>> d1 = numpy.array([1, 2, 3])
>>> d1.shape
(3,)
>>> d2 = numpy.array([[10, 10, 10], [20, 20, 20]])
>>> d2.shape
(2, 3)

>>> d2 @ d1
array([ 60, 120])
>>> (d2 @ d1).shape
(2,)

>>> d2 @ d1.reshape(3, 1)
array([[ 60],
       [120]])
>>> (d2 @ d1.reshape(3, 1)).shape
(2, 1)

>>> d1 @ d2.T
array([ 60, 120])
>>> d1.reshape(1, 3) @ d2.T
array([[ 60, 120]])
>>> d1.reshape(1, 1, 3) @ d2.T
array([[[ 60, 120]]])
1 Beğeni

Cevaplar yeterli ikinize de teşekkür ederim =)