Bilinmeyen sayıda sütunda eksik değerlere sahip olabilecek (yaklaşık 30'a kadar) CSV'ye kaydedilen verileri işlemeye çalışıyorum. genfromtxt
filling_missing
argümanını kullanarak bu eksik değerleri '0' olarak ayarlamaya çalışıyorum. Ben filling_values=0
beklenir NumPy kullanım kılavuzundanNumPy genfromtxt: fill_missing'i kullanarak doğru
plain [(1.0, 2.0, 3.0, 4.0) (5.0, nan, 7.0, 8.0)]
filling_values=0 [(1.0, 2.0, 3.0, 4.0) (5.0, nan, 7.0, 8.0)]
filling_values={1:0} [(1.0, 2.0, 3.0, 4.0) (5.0, 0.0, 7.0, 8.0)]
filling_values={0:0} [(1.0, 2.0, 3.0, 4.0) (5.0, nan, 7.0, 8.0)]
Traceback (most recent call last):
File "C:\Users\tolivo.EE\Documents\active\eng\python\sizer\testGenfromtxt.py", line 20, in <module>
a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={None:0})
File "C:\Users\tolivo.EE\AppData\Roaming\Python\Python27\site-packages\numpy\lib\npyio.py", line 1451, in genfromtxt
filling_values[key] = val
TypeError: list indices must be integers, not NoneType
ve: İşte numpy 1.6.2 Win 7. ActiveState ActivePython içinde
import numpy
text = "a,b,c,d\n1,2,3,4\n5,,7,8"
a = numpy.genfromtxt('test.txt',delimiter=',',names=True)
b = open('test.txt','w')
b.write(text)
b.close()
a = numpy.genfromtxt('test.txt',delimiter=',',names=True)
print "plain",a
a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values=0)
print "filling_values=0",a
a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={1:0})
print "filling_values={1:0}",a
a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={0:0})
print "filling_values={0:0}",a
a = numpy.genfromtxt('test.txt',delimiter=',',names=True,filling_values={None:0})
print "filling_values={None:0}",a
Ve sonuç 2.7 32 bit çalıştırmak için minimal bir çalışma örneğidir Çalışmak için filling_values={None:0}
ama bunun yerine sırasıyla bir hata atıyorlar. Doğru sütunu (filling_values={1:0}
) belirttiğinizde işe yarayacak, ancak kullanıcı tarafından seçim yapmadan önce bilinmeyen bir sayıdaki sütunların büyük bir kısmına sahip olduğum için, doldurulmuş değerleri otomatik olarak kullanıcı kılavuzu ipuçlarına benzer şekilde ayarlamanın yolunu arıyorum.
Sanırım sütunları önceden sayabilirim ve bu arada fill_values değeri olarak geçmek için bir dict oluşturabilirim, ama daha iyi bir yol var mı?
bir hata raporu söz konusudur: http://projects.scipy.org/numpy/ticket/1722 – Holger
sayesinde ben github hata izci konuya yorum ekledi. https://github.com/numpy/numpy/issues/2317 – Thav
Hata, şu anki geliştirme sürümüne sabitlenmiştir: https://github.com/numpy/numpy/pull/4968 –