Mendapatkan Number of samples, -20, must be non-negative.
saat mencoba membuat histogram kumpulan data saya.
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")
Ini my_data.csv
Jumlah sampel, -20, tidak boleh negatif.
1.16.4 3.7.4 (default, 13 Agustus 2019, 20:35:49)
[GCC 7.3.0]
Yang cukup menarik, ketika saya mengonversi dataset ini menjadi float, maka histogram sedang dibangun tanpa masalah
Terima kasih atas laporan bugnya. Saya dapat mengonfirmasi bahwa bug ini juga ada di cabang master.
NumPy devs: Masalahnya adalah ada fungsi internal, _hist_bin_sturges
di histograms.py
, yang menggunakan metode ptp
untuk menghitung selisih maksimum dan minimum array dengan Ketik int16
. Dalam kasus ini, maksimumnya adalah 32767 dan minimumnya adalah -16, sehingga perbedaannya harus 32783. Tetapi ptp
mengembalikan nilai dengan tipe yang sama seperti larik, sehingga mengembalikan -32753, yang menghasilkan perhitungan salah.
Kita dapat memperbaikinya dengan mengganti x.ptp()
dengan sesuatu seperti x.max().item() - x.min().item()
.
Sebagian besar penaksir bin lain memiliki masalah yang sama dengan x.ptp()
.
Kemungkinan perbaikan ada di https://github.com/numpy/numpy/pull/14381.
Komentar yang paling membantu
Terima kasih atas laporan bugnya. Saya dapat mengonfirmasi bahwa bug ini juga ada di cabang master.
NumPy devs: Masalahnya adalah ada fungsi internal,
_hist_bin_sturges
dihistograms.py
, yang menggunakan metodeptp
untuk menghitung selisih maksimum dan minimum array dengan Ketikint16
. Dalam kasus ini, maksimumnya adalah 32767 dan minimumnya adalah -16, sehingga perbedaannya harus 32783. Tetapiptp
mengembalikan nilai dengan tipe yang sama seperti larik, sehingga mengembalikan -32753, yang menghasilkan perhitungan salah.Kita dapat memperbaikinya dengan mengganti
x.ptp()
dengan sesuatu sepertix.max().item() - x.min().item()
.