Numpy ile listeleme

Arkadaşlar merhaba iki sorum olacaktı bunları normal olarak listeleyebiliyorum fakar 2D ve 3D olarak listelemem lazım nasıl yapabilirim yardımcı olursanız çok sevinirim. Aşağıya ekliyorum.
3 boyutlu 2 satır 3 sütunlu tek sayılardan oluşan liste oluşturunuz

Merhaba.

“bunlar” ne?

Bu 2 boyutlu bir liste tarif ediyor.

Merhaba öncelikle cevap verdiğin için teşekkür ediyorum.

tek=[]

for i in range(36):

    if i%2==1:

        tek.append([i])

print(tek)


bu şekilde tek boyutlu olarak listeleyebiliyorum fakat
image
çıktı olarak bu lazım

Kodlarınızı buraya göre atabilir misiniz:

1 Beğeni

Programın çıktısı şöyle çıkıyor bende:

[[1], [3], [5], [7], [9], [11], [13], [15], [17], [19], [21], [23], [25], [27], [29], [31], [33], [35]]

Ve bu da 1 sütunlu 18 satırlı 2 boyutlu bir liste.

1 Beğeni

Burada niçin i eklemek yerine [i] ekliyorsunuz ki?


Şu kodu inceleyin:

tek=[]

for i in range(1, 36, 2): # başlangıç, bitiş, artış
    tek.append(i)

print(tek)

Ekrana istediğimiz gibi yazarız, o kolay; siz listeyi nasıl istiyorsunuz? İstediğiniz listeyi yazarsanız daha rahat çözüm üretiriz.

import numpy as np
liste = np.array([])
satir=int(input("Satır Sayısı Giriniz: "))
sutun=int(input("Sutun Sayısı Giriniz: "))
sayi=int(input("Kaça Kadar: "))
if (satir*sutun)<sayi or (satir*sutun)>sayi:
  print("Lütfen satır ve sütunun ayırabileceği sayı giriniz. (Not: Çarpımlar kadar)")
else:
  liste = np.arange(0,sayi,1)
  liste = liste.reshape(satir,sutun)
  print(liste)

bu tarz yapabildim fakat bunun tek sayılardan oluşanı lazım numpy da dizilere bir türlü ekleyemedim.

tek=[]

for i in range(1, 36, 2): # başlangıç, bitiş, artış
tek.append(i)

print(tek)
tek.reshape(2,3)

Şu listeyi 2*3lük matrise çevirin

Şu kodu inceleyin:

import numpy as np

liste = np.array([])

satir=int(input("Satır Sayısı Giriniz: "))
sutun=int(input("Sutun Sayısı Giriniz: "))


liste = np.arange(1, satir*sutun*2, 2) # başlangıç = 1, bitiş = satir*sutun*2, artış = 2
liste = liste.reshape(satir,sutun)
print(liste)
2 Beğeni

list in böyle bir metodu yok.

Aşağıdaki kodlara bir bakın isterseniz.

import numpy as np

array = np.arange(1, 36, 2)
reshaped = array.reshape(3, 2, 3)

for i in range(len(reshaped[0])):
    for j in reshaped:
            print(j[i], end="\t".expandtabs(4))
    print()

Çıktı:

[1 3 5]    [13 15 17]    [25 27 29]    
[ 7  9 11]    [19 21 23]    [31 33 35]  
1 Beğeni

Eksik yazdım demek istediğim onu diziye çevirip sonra 2*3 matris yapması

1 Beğeni

Çok teşekkür ederim Ekrem Bey fakat bunu 3 boyutlu nasıl yapacağız

Onu da @dildeolupbiten yapmış.

@dildeolupbiten ve @EkremDincel ikinizede çok teşekkür ederim bu forma yeni katıldım bu kadar hızlı ve doğru cevaplar alacağımı bilmiyordum teşekkür ederim.İyi günler

2 Beğeni

Böyle bir forum bulamasın gerçekten harikadır.

1 Beğeni

Bu arada modül kullanmadan, öz-yinelemeli olarak n boyutlu dizi oluşturmak için şu yöntemi kullanabilirsiniz:

def narray(*args, start: int = 0, step: int = 0):
    globals()["n"] = start

    def inner(*args):
        if not args:
            globals()["n"] += step
        return [
            inner(*args[:-1]) for i in range(args[-1])
        ] if args else globals()["n"] - step
        
    return inner(*args)

Örnekler:

print(narray(3, 2, 3, start=1, step=2))  # 3x2x3'lük bir matris
# [[[1, 3, 5], [7, 9, 11]], [[13, 15, 17], [19, 21, 23]], [[25, 27, 29], [31, 33, 35]]]

print(narray(2, 5, start=1, step=2))  # 2x5'lik bir matris
# [[1, 3], [5, 7], [9, 11], [13, 15], [17, 19]]

print(narray(2, 5, start=1, step=1))  # 2x5'lik bir başka matris
# [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

print(narray(10, 1, start=1, step=1))  # 10x1'lik bir matris
# [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]

print(narray(1, 10, start=1, step=1))  # 1x10'luk bir matris
# [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]
2 Beğeni

O globals lar ne öyle :disappointed: Neyse ki nonlocal var:

def narray(*args, start: int = 0, step: int = 0):

    def inner(*args):
        nonlocal start
        if not args:
            start += step
        return [
            inner(*args[:-1]) for i in range(args[-1])
        ] if args else start - step
        
    return inner(*args)
2 Beğeni

Daha önce hiç nonlocal kullanmamıştım. :slight_smile:

1 Beğeni

sayi'nin satir×sutun oldugunu/olmasi gerektigini biliyorsak niye ayrica sorup hata veriyoruz?

Tek sayilar icin iki bagimsiz ipucu:

  • Bir ndarray’i (2, n) veya (n, 2) sekline sokarsan satir/sutunlardan biri tek, digeri cift sayilardan olusacak.
  • Tek sayi yaratma formulu tek(n) = 2*n + 1
2 Beğeni