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:

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.

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)

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]  

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

Ç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

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

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]]

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)

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

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