Numpy: genfromtxt لن تفريغ إذا كان dtype = لا شيء

تم إنشاؤها على ٢١ فبراير ٢٠١٤  ·  6تعليقات  ·  مصدر: numpy/numpy

لست متأكدًا مما إذا كان هذا خطأ أو ميزة ولكن إذا كنت أستخدم:

f_data = np.genfromtxt('file.dat', dtype=None, unpack=True)

حيث file.dat هو ملف بيانات قياسي به عدة أعمدة (على سبيل المثال: http://pastebin.com/ihEW2dxS) لا يتم نقل النتيجة كما يتوقع المرء أن يكون قد وضع unpack=True .

على سبيل المثال ، يعمل السطر f_data = np.loadtxt('file.dat', unpack=True) كما هو متوقع.

00 - Bug numpy.lib good first issue

التعليق الأكثر فائدة

أنا أيضا أختبر هذا. loadtxt أكثر ذكاءً:

if unpack:
        if len(dtype_types) > 1:
            # For structured arrays, return an array for each field.
            return [X[field] for field in dtype.names]
        else:
            return X.T

لماذا لا يقوم genfromtxt بهذا؟

ال 6 كومينتر

يبدو وكأنه خطأ ، ووضع علامة عليه حتى يتم إبلاغه بخلاف ذلك.

لقد حققت في هذا قليلا.

نتيجة كود @ Gabriel-p هي شكل (12 ،) مصفوفة مرنة. يستدعي الكود output.T عليه ، ولكن نظرًا لأنه بعد واحد ، فهذا أمر غير متاح.

أكبر مشكلة يحددها dtype=None أنه سيكون مصفوفة مرنة. كل عمود له نوع منفصل مستنتج. إذا أردنا تغيير هذه النتيجة حقًا ، فسيحتاج كل صف إلى نوع منفصل. AFAIK ، الطريقة الوحيدة للقيام بذلك هي الحصول على قائمة أو مجموعة من المصفوفات المتجانسة.

نظرًا لأن numCols << numRows في الملف النصي ، فإن استخدام قائمة أو مجموعة لا ينبغي أن يكون مشكلة كبيرة. إذا تم تنفيذه بهذه الطريقة ، فسيتم فك ضغطه مقابل x, y, z = np.genfromtxt(...) كما هو محدد في المستندات ، وحل حالة @ Gabriel-p.

ومع ذلك ، فإن genfromtxt بالفعل أكثر من 600 سطر. أي أفكار؟

لقد تعرضت للعض من هذا أيضًا. لقد قدمت حالة اختبار ، انظر

https://github.com/hsgg/numpy.git

أنا أيضا أختبر هذا. loadtxt أكثر ذكاءً:

if unpack:
        if len(dtype_types) > 1:
            # For structured arrays, return an array for each field.
            return [X[field] for field in dtype.names]
        else:
            return X.T

لماذا لا يقوم genfromtxt بهذا؟

أي تعديل حدث في هذه القضية؟ يبدو أنه لم يتغير منذ 2014.

الاقتراح @ moi90 المقدم قبل عامين صحيح. genfromtxt يجب أن يفعل نفس الشيء مثل loadtxt .

أعتقد أنه سيكون من السهل إصلاحه ، لذلك قمت بوضع علامة على المشكلة باعتبارها "مشكلة أولى جيدة".

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات