NumPy memiliki fungsi / metode yang efisien nonzero()
untuk mengidentifikasi indeks elemen yang tidak nol dalam suatu ndarray
objek. Apa cara yang paling efisien untuk mendapatkan indeks dari elemen yang melakukan memiliki nilai nol?
144
where()
mengembalikan tuple?numpy.where(x == 0)[1]
di luar batas. apa array indeks digabungkan untuk itu?np.zeros((3,))
untuk membuat vektor 3-panjang misalnya. Saya menduga ini untuk membuat parsing params mudah. Kalau tidak, sesuatu sepertinp.zeros(3,0,dtype='int16')
versusnp.zeros(3,3,3,dtype='int16')
akan mengganggu untuk diterapkan.where
mengembalikan tupelndarray
s, masing-masing sesuai dengan dimensi input. dalam hal ini inputnya adalah array, jadi outputnya adalah a1-tuple
. Jika x adalah sebuah matriks, itu akan menjadi2-tuple
, dan seterusnyanumpy.where
secara khusus merekomendasikan penggunaannumpy.nonzero
langsung daripada meneleponwhere
hanya dengan satu argumen.Ada
np.argwhere
,yang mengembalikan semua indeks yang ditemukan sebagai baris:
sumber
Anda dapat mencari kondisi skalar apa pun dengan:
Yang akan mengembalikan array sebagai topeng kondisi boolean.
sumber
a[a==0] = epsilon
Anda juga dapat menggunakannya
nonzero()
dengan menggunakannya pada topeng kondisi boolean, karenaFalse
juga semacam nol.Ini melakukan persis sama seperti
mtrw
cara, tetapi lebih terkait dengan pertanyaan;)sumber
nonzero
untuk memeriksa kondisi.Anda dapat menggunakan numpy.nonzero untuk menemukan nol.
sumber
Jika Anda bekerja dengan array satu dimensi ada gula sintaksis:
sumber
numpy.flatnonzero(numpy.logical_or(numpy.logical_or(x==0, x==2), x==7))
sumber
Saya akan melakukannya dengan cara berikut:
sumber