Numpy: Jumlah histgram sampel negatif dengan bins = "auto"

Dibuat pada 27 Agu 2019  ·  4Komentar  ·  Sumber: numpy/numpy

Mendapatkan Number of samples, -20, must be non-negative. saat mencoba membuat histogram kumpulan data saya.

Contoh kode reproduksi:

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

Pesan eror:


Jumlah sampel, -20, tidak boleh negatif.

Informasi versi Numpy / Python:


1.16.4 3.7.4 (default, 13 Agustus 2019, 20:35:49)
[GCC 7.3.0]

00 - Bug numpy.lib

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 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() .

Semua 4 komentar

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat