Soru Sayısal diziyi txt dosyası satırı bilgisine kaydetme


Saydam bir form dizim var

a = [1,2,3]

Ben dosya gibi görünecek bir .txt dosyasına kaydetmek istiyorum:

1 2 3

Numpy.savetxt kullanırsam, şöyle bir dosya alırım:

1
2
3

Her türlü öneri, bu konuda benim için kolay bir çözüm olmalı?


25
2018-03-05 10:55


Menşei


Yoksa sadece 1D dizileriyle mi uğraşıyorsun? - Benjamin Bannier


Cevaplar:


Eğer numpy >= 1.5, yapabilirsin:

# dosya adının çift tırnak içine alındığını unutmayın
      # example "filename.txt"

numpy.savetxt("filename", a, newline=" ")

Düzenle

aynı uzunlukta birkaç 1D dizisi

a = numpy.array([1,2,3])
b = numpy.array([4,5,6])
numpy.savetxt(filename, (a,b), fmt="%d")

# gives:
# 1 2 3
# 4 5 6

değişken uzunlukta birkaç 1D dizisi

a = numpy.array([1,2,3])
b = numpy.array([4,5])

with open(filename,"w") as f:
    f.write("\n".join(" ".join(map(str, x)) for x in (a,b)))

# gives:
# 1 2 3
# 4 5

30
2018-03-05 11:08



Bir sonraki satırda, dosyaya yeni bir özdeş dizi eklenecekse ne olur? Hattın ilk satırı nasıl kırılır ve ikinci sıraya nasıl devam edilir? - Palle
@PatrikT: Birden fazla 1D diziniz varsa, numpy.savetxt(filename,(a,b,c)). Bu satır bilge kaydeder. Ama aynı büyüklükte olmalılar. - Avaris
Ya, ör. a b ve c'den daha kısa mı? Bu 3 diziyi sırayla nasıl kaydederim? - Palle
@PatrikT: Değişken uzunluklu dizileriniz varsa, savetxt yardım fazla değil. Yapmak mümkündür ama çirkinleşir ve düşündüğüm amacı yener. Sadece normal olarak yaz BioGeek bir döngüde önerildi. Cevabımı tüm bu alternatifleri içerecek şekilde düzenleyeceğim. - Avaris


Alternatif bir cevap, dizileri boyutlarını sağlamak için yeniden şekillendirmek (1, N) öyle:

savetext(filename, a.reshape(1, a.shape[0]))

14
2018-03-05 14:38





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

with open(r'test.txt', 'w') as f:
    f.write(" ".join(map(str, a)))

6
2018-03-05 11:05





Yeni satır karakterinin hala gerekli olduğu durumlarda kabul edilen yanıttaki ilk çözümün sorunlu olduğunu gördüm. Soruna en kolay çözüm bunu yapıyordu:

numpy.savetxt(filename, [a], delimiter='\t')

2
2018-05-13 23:50





import numpy as np

a = [1,2,3]    
b = np.array(a).reshape((1,3))    
np.savetxt('a.txt',b,fmt='%d')

1
2018-03-15 13:55



Bu yalnızca kod yanıtı sorunu çözebilirken, sitenin gelecekteki kullanıcılarının bu çözümü kendi durumlarına nasıl uygulayacağını anlamalarına yardımcı olmak için daha fazla açıklama gereklidir. - Keyur Potdar
Lütfen cevabınıza biraz açıklama ekleyin - Ryan Schaefer


sadece

' '.join(a)

ve bu çıkışı bir dosyaya yaz.


-1
2018-03-05 11:04



Bu bir TypeError: sequence item 0: expected string, numpy.int32 foundbu yüzden önce katılmadan önce dizgeye dönüştürmelisiniz. - BioGeek
'' .join (a) x için str (x) - st.ph.n