الحصول على Number of samples, -20, must be non-negative.
عند محاولة إنشاء مدرج تكراري لمجموعة البيانات الخاصة بي.
import numpy as np
my_data = np.loadtxt("my_data.csv", delimiter=',', dtype=np.int16)
n_base, bins_base = np.histogram(my_data, bins="auto")
هنا my_data.csv
يجب أن يكون عدد العينات ، -20 ، غير سالب.
1.16.4 3.7.4 (افتراضي ، 13 أغسطس 2019 ، 20:35:49)
[مجلس التعاون الخليجي 7.3.0]
ومن المثير للاهتمام ، أنه عندما أقوم بتحويل مجموعة البيانات هذه إلى "عائم" ، يتم إنشاء المدرج التكراري بدون مشكلة
شكرا لتقرير الشوائب. أستطيع أن أؤكد أن هذا الخطأ موجود في الفرع الرئيسي أيضًا.
مطورو NumPy: المشكلة هي أن هناك دالة داخلية ، _hist_bin_sturges
في histograms.py
، تستخدم الطريقة ptp
لحساب الفرق بين الحد الأقصى والحد الأدنى من المصفوفة باستخدام dtype int16
. في هذه الحالة ، الحد الأقصى هو 32767 والحد الأدنى هو -16 ، لذلك يجب أن يكون الاختلاف 32783. لكن ptp
تُرجع قيمة من نفس نوع المصفوفة ، لذلك تُرجع -32753 ، مما ينتج عنه حساب غير صحيح.
يمكننا إصلاح ذلك عن طريق استبدال x.ptp()
بشيء مثل x.max().item() - x.min().item()
.
معظم مقدرات الحاوية الأخرى لديها نفس المشكلة مع x.ptp()
.
يوجد إصلاح محتمل في https://github.com/numpy/numpy/pull/14381.
التعليق الأكثر فائدة
شكرا لتقرير الشوائب. أستطيع أن أؤكد أن هذا الخطأ موجود في الفرع الرئيسي أيضًا.
مطورو NumPy: المشكلة هي أن هناك دالة داخلية ،
_hist_bin_sturges
فيhistograms.py
، تستخدم الطريقةptp
لحساب الفرق بين الحد الأقصى والحد الأدنى من المصفوفة باستخدام dtypeint16
. في هذه الحالة ، الحد الأقصى هو 32767 والحد الأدنى هو -16 ، لذلك يجب أن يكون الاختلاف 32783. لكنptp
تُرجع قيمة من نفس نوع المصفوفة ، لذلك تُرجع -32753 ، مما ينتج عنه حساب غير صحيح.يمكننا إصلاح ذلك عن طريق استبدال
x.ptp()
بشيء مثلx.max().item() - x.min().item()
.