Cara memperbaiki: hanya array berukuran 1 yang dapat dikonversi ke skalar python


Kesalahan yang mungkin Anda temui saat menggunakan Python adalah:

 TypeError : only size-1 arrays can be converted to Python scalars

Kesalahan ini paling sering terjadi ketika mencoba menggunakan np.int() untuk mengonversi array nilai float NumPy menjadi array nilai integer.

Namun, fungsi ini hanya menerima satu nilai, bukan serangkaian nilai.

Sebagai gantinya, Anda harus menggunakan x.astype(int) untuk mengonversi array nilai float NumPy menjadi array nilai integer, karena fungsi ini mampu menerima array.

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita membuat array nilai float NumPy berikut:

 import numpy as np

#create NumPy array of float values
x = np. array ([3, 4.5, 6, 7.7, 9.2, 10, 12, 14.1, 15])

Sekarang misalkan kita mencoba mengubah array nilai float ini menjadi array nilai integer:

 #attempt to convert array to integer values
n.p. int (x)

TypeError : only size-1 arrays can be converted to Python scalars 

Kami menerima TypeError karena fungsi np.int() hanya menerima nilai tunggal, bukan array nilai.

Bagaimana cara memperbaiki kesalahan tersebut

Untuk mengonversi array NumPy yang berisi nilai float menjadi nilai integer, kita dapat menggunakan kode berikut:

 #convert array of float values to integer values
x. astype (int)

array([ 3, 4, 6, 7, 9, 10, 12, 14, 15])

Perhatikan bahwa array nilai telah diubah menjadi bilangan bulat dan kami tidak menerima kesalahan apa pun karena fungsi astype() mampu menangani array nilai.

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi astype() di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *