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
çı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 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.
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