• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

NumPy fromfile ile sayısal veri nasıl okunur?

  • Konuyu Başlatan Konuyu Başlatan Garfield
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 0
  • Etiketler Etiketler
    veri bilimi

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni

Temel kullanım​


numpy.fromfile(), dosyadaki verileri NumPy dizisine aktarır. İkili bir dosya okuyorsanız veri türünü (dtype) dosyanın yazıldığı türle aynı belirtin; metin dosyasında ise sep parametresini kullanın. Böylece okuma sonunda sayısal değerlerden oluşan bir ndarray elde edersiniz.

Ön koşul olarak NumPy kurulu olmalıdır. Aşağıdaki örnek, varsayımsal olarak sayilar.bin dosyasının 64 bit kayan noktalı değerler içerdiğini kabul eder:

Python:
import numpy as np

veriler = np.fromfile("sayilar.bin", dtype=np.float64)

print(veriler)
print(veriler.dtype)
print(veriler.shape)

Dosya sırasıyla 1.5, 2.75 ve 10.0 değerlerini içeriyorsa beklenen çıktı yaklaşık olarak şöyledir:

Kod:
[ 1.5   2.75 10.  ]
float64
(3,)

Buradaki (3,), dizinin tek boyutlu ve üç elemanlı olduğunu gösterir. Bu sonuç dosyanın gerçekten doğru biçimde yazıldığını tek başına kanıtlamaz; yanlış dtype seçilirse aynı baytlar bambaşka sayılar olarak yorumlanabilir.

İkili ve metin dosyası arasındaki fark​


fromfile hem ikili hem de metin veri okuyabilir; hangi yöntemin kullanılacağı dosyanın fiziksel biçimine bağlıdır. İkili dosyada sep boş bırakılır veya varsayılan değerde tutulur. Metin dosyasında ayraç belirtilir.
Dosya biçimiTemel kullanımDikkat edilmesi gereken
İkilinp.fromfile("veri.bin", dtype=np.float32)dtype, dosyanın yazıldığı türle aynı olmalıdır.
Metinnp.fromfile("veri.txt", dtype=float, sep=" ")sep, dosyadaki ayraçla eşleşmelidir.
Örneğin veri.txt içinde şu metin varsa:

Kod:
10.5 20.25 30.0

şu kod sayıları okur:

Python:
import numpy as np

veriler = np.fromfile("veri.txt", dtype=float, sep=" ")
print(veriler)

Beklenen çıktı [10.5 20.25 30. ] benzeri bir dizidir. Satırlar arasında değişken boşluklar varsa sep=" " genel boşluk ayırıcılarını ele alabilir. Virgülle ayrılmış bir metin için sep=", " veya dosyanın gerçek biçimine uygun başka bir ayraç kullanın.

Okumayı sınırlandırma ve şekil verme​


Büyük bir dosyanın tamamını almak yerine belirli sayıda eleman okuyabilirsiniz. count okunacak eleman sayısını, offset ise ikili dosyada başlangıçta atlanacak bayt sayısını belirtir:

Python:
import numpy as np

ilk_on = np.fromfile("sayilar.bin", dtype=np.float64, count=10)
sonraki_on = np.fromfile(
    "sayilar.bin",
    dtype=np.float64,
    count=10,
    offset=10 * np.dtype(np.float64).itemsize
)

İkinci okumada ilk 10 adet float64 değerin kapladığı baytlar atlanır ve sonraki 10 değer alınır. offset değeri eleman sayısı değil, bayt sayısıdır. Yanlış hesaplanırsa veri elemanının ortasından başlanabilir ve anlamsız sonuçlar elde edilebilir.

Dosyada toplam 12 adet değer bulunduğunu biliyorsanız okuma sonrasında diziyi iki boyutlu hâle getirebilirsiniz:

Python:
veriler = np.fromfile("sayilar.bin", dtype=np.float64)

if veriler.size != 12:
    raise ValueError(f"12 değer bekleniyordu, {veriler.size} değer okundu.")

matris = veriler.reshape(3, 4)
print(matris)

reshape(3, 4) işlemi 12 elemanı 3 satır ve 4 sütun olarak düzenler. Eleman sayısı 12 değilse şekillendirme yapılamaz; bu nedenle önce size ile kontrol etmek hatayı daha anlaşılır hâle getirir.

Yaygın hataları ayırma​


Dosya bulunamıyorsa Python genellikle FileNotFoundError üretir. Dosya yolunu ve programın çalıştığı geçerli klasörü kontrol edin; göreli yol, betiğin bulunduğu klasörle her zaman aynı olmayabilir.

Sonuçta çok büyük veya anlamsız sayılar görülüyorsa önce dtype değerini kontrol edin. Veriyi yazan program float32 kullandıysa okurken float64 seçmek baytların gruplanmasını değiştirir. Benzer şekilde işaretli ve işaretsiz tamsayı türleri de aynı bitleri farklı yorumlar.

Metin dosyasında hiç veri okunmuyorsa sep değerinin dosyadaki ayraçla aynı olduğundan emin olun. İkili dosyada sep vermek yerine doğru dtype kullanılmalıdır.

Dosya biçimi bilinmiyorsa​


fromfile dosyanın veri türünü, boyutunu veya byte sırasını kendiliğinden güvenilir biçimde keşfetmez. Okumadan önce veriyi üreten programın kullandığı dtype, eleman sayısı, bayt sırası ve varsa başlık yapısı bilinmelidir. Dosyada başlık bilgisi bulunuyorsa başlık baytlarını offset ile atlamak veya önce başlığı ayrı okumak gerekir.

Düzenli olarak paylaşılacak NumPy verileri için yalnızca ham fromfile çıktısına güvenmek yerine veri türünü ve şekli ayrıca saklayan bir biçim tercih etmek daha güvenlidir. fromfile hızlı ve basit bir ham veri okuyucusudur; ancak dosyaya veri türü ve boyut bilgisi eklemez.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic
Geri
Üst