Cara memperbaikinya: hanya array skalar bilangan bulat yang dapat dikonversi menjadi indeks skalar


Kesalahan yang mungkin Anda temui saat menggunakan Python adalah:

 TypeError : only integer scalar arrays can be converted to a scalar index

Kesalahan ini biasanya terjadi karena salah satu dari dua alasan berikut:

1. Anda mencoba melakukan pengindeksan array pada daftar.

2. Anda mencoba menggabungkan dua matriks menggunakan sintaksis yang salah.

Contoh berikut menunjukkan cara menghindari kesalahan ini di kedua skenario.

Contoh 1: Anda mencoba melakukan pengindeksan array pada daftar.

Misalkan kita mencoba menggunakan kode berikut untuk membuat diagram garis di matplotlib dengan legenda dan label:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = data[random_values. astype (int)]

#view results
random_vals

TypeError : only integer scalar arrays can be converted to a scalar index

Kami menerima kesalahan karena kami mencoba menggunakan pengindeksan array pada daftar.

Untuk menghindari kesalahan ini, pertama-tama kita harus mengonversi daftar menjadi array NumPy menggunakan np.array() sebagai berikut:

 import numpy as np

#create a list of values
data = [3, 5, 5, 7, 8, 10, 12, 14]

#choose 3 random values from list
random_values = np. random . choice (range(len(data)), size= 2 )

#attempt to use indexing to access elements in list
random_vals = np. array (data)[random_values. astype (int)]

#view results
random_vals

array([5, 7])

Kali ini kita dapat memilih dua nilai dari daftar secara acak tanpa kesalahan apa pun sejak pertama kali kita mengonversi daftar tersebut menjadi array NumPy.

Contoh 2: Anda mencoba menggabungkan dua matriks menggunakan sintaksis yang salah.

Misalkan kita mencoba menggunakan kode berikut untuk menggabungkan dua matriks NumPy:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate (mat1, mat2)

TypeError : only integer scalar arrays can be converted to a scalar index

Kami menerima kesalahan karena kami gagal menyediakan matriks sebagai tupel ke fungsi concatenate() .

Untuk menghindari kesalahan ini, Anda harus menggunakan tanda kurung ganda untuk memberikan matriks dalam bentuk tupel ke fungsi concatenate() sebagai berikut:

 import numpy as np

#create twoNumPy matrices
mat1 = np. matrix ([[3, 5], [5, 7]])
mat2 = np. matrix ([[2, 4], [1, 8]])

#attempt to concatenate both matrices
n.p. concatenate ((mat1, mat2))

matrix([[3, 5],
        [5, 7],
        [2, 4],
        [1, 8]])

Kali ini kami berhasil menggabungkan kedua matriks tersebut tanpa kesalahan apa pun.

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 *