Nilai float lantai numpy ke int
Nov 23 2020
Saya memiliki array float, dan saya ingin mendasarkannya ke integer terdekat, jadi saya bisa menggunakannya sebagai indeks.
Sebagai contoh:
In [2]: import numpy as np
In [3]: arr = np.random.rand(1, 10) * 10
In [4]: arr
Out[4]:
array([[4.97896461, 0.21473121, 0.13323678, 3.40534157, 5.08995577,
6.7924586 , 1.82584208, 6.73890807, 2.45590354, 9.85600841]])
In [5]: arr = np.floor(arr)
In [6]: arr
Out[6]: array([[4., 0., 0., 3., 5., 6., 1., 6., 2., 9.]])
In [7]: arr.dtype
Out[7]: dtype('float64')
Mereka masih mengapung setelah lantai, apakah ada cara untuk secara otomatis melemparkannya ke bilangan bulat?
Jawaban
2 Jocker Nov 23 2020 at 12:01
Saya mengedit jawaban dengan penjelasan @DanielF: "floor tidak dikonversi ke integer, itu hanya memberikan float bernilai integer, jadi Anda masih perlu astype untuk diubah menjadi int" Periksa kode ini untuk memahami solusinya:
import numpy as np
arr = np.random.rand(1, 10) * 10
print(arr)
arr = np.floor(arr).astype(int)
print(arr)
OUTPUT:
[[2.76753828 8.84095843 2.5537759 5.65017407 7.77493733 6.47403036
7.72582766 5.03525625 9.75819442 9.10578944]]
[[2 8 2 5 7 6 7 5 9 9]]
1 vegiv Nov 23 2020 at 12:08
Mengapa tidak menggunakan saja:
np.random.randint(1,10)
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'