मैं CSV में सहेजे गए डेटा को संसाधित करने का प्रयास कर रहा हूं जिसमें अज्ञात संख्या में कॉलम (लगभग 30 तक) में अनुपलब्ध मान हो सकते हैं। मैं उन लापता मानों को genfromtxt
के filling_missing
तर्क का उपयोग करके '0' पर सेट करने का प्रयास कर रहा हूं।NumPy genfromtxt: filling_missing सही ढंग से उपयोग करके
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
उपयोगकर्ता पुस्तिका NumPy मैं filling_values=0
उम्मीद करेंगे से और: यहाँ numpy 1.6.2
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
और परिणाम विन 7 पर 2.7 32 बिट ActiveState ActivePython में चलाने के लिए एक न्यूनतम काम कर उदाहरण है काम करने के लिए filling_values={None:0}
लेकिन इसके बजाय वे क्रमशः एक त्रुटि नहीं फेंकते हैं। जब आप सही कॉलम निर्दिष्ट करते हैं (filling_values={1:0}
) यह काम करेगा, लेकिन चूंकि मेरे पास उपयोगकर्ता द्वारा चयन से पहले अज्ञात संख्या के कॉलम की बड़ी मात्रा है, इसलिए मैं भरे हुए मानों को स्वचालित रूप से उपयोगकर्ता मार्गदर्शिका संकेतों को सेट करने का तरीका ढूंढ रहा हूं।
मुझे लगता है कि मैं शायद पहले से ही कॉलम गिन सकता हूं और इस बीच में भरने के मूल्य के रूप में पास करने के लिए एक नियम बना सकता हूं, लेकिन क्या कोई बेहतर तरीका है?
एक बग रिपोर्ट भी बना हुआ है: http://projects.scipy.org/numpy/ticket/1722 – Holger
धन्यवाद, मैं GitHub बग ट्रैकर पर इस मुद्दे पर कोई टिप्पणी जोड़ी। https://github.com/numpy/numpy/issues/2317 – Thav
बग अब numpy के विकास संस्करण में तय किया गया है: https://github.com/numpy/numpy/pull/4968 –