πŸ” Как Π½Π°ΠΉΡ‚ΠΈ nan Π² numpy? 🧐

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ значСния NaN Π² массивС NumPy, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ np.isnan(). Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π³Π΄Π΅ True ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° мСста, Π³Π΄Π΅ элСмСнты ΡΠ²Π»ΡΡŽΡ‚ΡΡ NaN. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import numpy as np

array = np.array([1, np.nan, 3, np.nan, 5])

nan_indices = np.isnan(array)

print(nan_indices)
Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ массив Π±ΡƒΠ»Π΅Π²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° мСста, Π³Π΄Π΅ элСмСнты ΡΠ²Π»ΡΡŽΡ‚ΡΡ NaN. НапримСр, для массива [1, NaN, 3, NaN, 5] Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ [False, True, False, True, False].
НадСюсь, это ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ! Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ вопросы, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π½Π°ΠΉΡ‚ΠΈ nan Π² numpy

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ NumPy Π΅ΡΡ‚ΡŒ нСсколько способов Π½Π°ΠΉΡ‚ΠΈ значСния NaN (Not a Number). Когда Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с массивами, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ»ΠΈ мСстонахоТдСниС этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π½Π°ΠΉΡ‚ΠΈ NaN Π² NumPy.

1. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ isnan

Ѐункция numpy.isnan() позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π½Π° NaN ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ логичСский массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ элСмСнт Ρ€Π°Π²Π΅Π½ True, Ссли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт исходного массива являСтся NaN, ΠΈ False Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования:


import numpy as np

arr = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
nan_mask = np.isnan(arr)
print(nan_mask)
# Π’Ρ‹Π²ΠΎΠ΄: [False  True False  True False]
    

2. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ where

Ѐункция numpy.where() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для поиска индСксов элСмСнтов, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ условиям. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования для поиска индСксов элСмСнтов, Ρ€Π°Π²Π½Ρ‹Ρ… NaN:


import numpy as np

arr = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
nan_indices = np.where(np.isnan(arr))
print(nan_indices)
# Π’Ρ‹Π²ΠΎΠ΄: (array([1, 3]),)
    

3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ any

Ѐункция numpy.any() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ оси удовлСтворяСт ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ провСряСм, содСрТит Π»ΠΈ массив хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NaN:


import numpy as np

arr = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
has_nan = np.any(np.isnan(arr))
print(has_nan)
# Π’Ρ‹Π²ΠΎΠ΄: True
    

4. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ count_nonzero

Ѐункция numpy.count_nonzero() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов Π² массивС. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для подсчСта количСства NaN Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массивС.


import numpy as np

arr = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
nan_count = np.count_nonzero(np.isnan(arr))
print(nan_count)
# Π’Ρ‹Π²ΠΎΠ΄: 2
    

5. НахоТдСниС мСстополоТСния NaN Π² массивС

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ индСксы мСстонахоТдСния NaN Π² массивС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


import numpy as np

arr = np.array([1.0, np.nan, 3.0, np.nan, 5.0])
nan_indices = np.argwhere(np.isnan(arr))
print(nan_indices)
# Π’Ρ‹Π²ΠΎΠ΄: [[1]
#          [3]]
    

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько способов для обнаруТСния ΠΈ мСстополоТСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NaN Π² массивС с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ numpy.isnan(), numpy.where(), numpy.any(), numpy.count_nonzero(), ΠΈ numpy.argwhere() Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… потрСбностСй. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ NaN Π²Π°ΠΆΠ½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

#9. Π‘ΡƒΠ»Π΅Π²Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, значСния inf ΠΈ nan | NumPy ΡƒΡ€ΠΎΠΊΠΈ

05 Numpy clip and NaN

Handling Missing Values with Numpy

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Как Π½Π°ΠΉΡ‚ΠΈ nan Π² numpy? 🧐