Thêm vào câu trả lời của @Nico-schlömer và @Mseifert, tôi đã tính toán hiệu suất của một bài kiểm tra numba
Example: Given array = [1, 2, 3, 4, NaN, 5, 6] The Array has NaN value at 5th position.0 với các điểm dừng sớm, so với một số chức năng sẽ phân tích toàn bộ mảng đầy đủ.
Trên máy của tôi, đối với một mảng không có nans, hòa vốn xảy ra cho ~ 10^4 phần tử.
import perfplot
import numpy as np
import numba
import math
def min[a]:
return np.isnan[np.min[a]]
def dot[a]:
return np.isnan[np.dot[a, a]]
def einsum[a]:
return np.isnan[np.einsum["i->", a]]
@numba.njit
def has_nan[a]:
for i in range[a.size - 1]:
if math.isnan[a[i]]:
return True
return False
def array_with_missing_values[n, p]:
""" Return array of size n, p : nans [ % of array length ]
Ex : n=1e6, p=1 : 1e4 nan assigned at random positions """
a = np.random.rand[n]
p = np.random.randint[0, len[a], int[p*len[a]/100]]
a[p] = np.nan
return a
#%%
perfplot.show[
setup=lambda n: array_with_missing_values[n, 0],
kernels=[min, dot, has_nan],
n_range=[2 ** k for k in range[20]],
logx=True,
logy=True,
xlabel="len[a]",
]
Điều gì xảy ra nếu mảng có nans? Tôi đã điều tra tác động của phạm vi bảo hiểm nan của mảng.
Đối với các mảng có độ dài 1.000.000,
Example: Given array = [1, 2, 3, 4, NaN, 5, 6] The Array has NaN value at 5th position.0 trở thành một lựa chọn tốt hơn là có ~ 10^-3 % nans [vì vậy ~ 10 nans] trong mảng.
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
Nếu trong ứng dụng của bạn, hầu hết các mảng có
Example: Given array = [1, 2, 3, 4, NaN, 5, 6] The Array has NaN value at 5th position.2 và bạn đang tìm kiếm những mảng không có, thì
Example: Given array = [1, 2, 3, 4, NaN, 5, 6] The Array has NaN value at 5th position.0 là cách tiếp cận tốt nhất. Khác;
Example: Given array = [1, 2, 3, 4, NaN, 5, 6] The Array has NaN value at 5th position.4 dường như là lựa chọn tốt nhất.
Trong bài viết này, chúng tôi sẽ học cách kiểm tra xem một mảng numpy có chứa bất kỳ giá trị nan nào trong Python không.
Mục lục
- Giá trị NAN là gì?
- Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isnan [] không
- Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isna [] không
- Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng mô -đun toán học không
- Kiểm tra xem một mảng numpy có giá trị nan nào bằng cách sử dụng bình đẳng không
Giá trị NAN là gì?
Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isnan [] không
Usually NaN values are used to represent the missing data in a dataframe or a NumPy Array.
Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isna [] không
Example: Given array = [1, 2, 3, 4, NaN, 5, 6] The Array has NaN value at 5th position.
Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng mô -đun toán học không
Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isnan [] không
Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isna [] không
Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng mô -đun toán học không
Kiểm tra xem một mảng numpy có giá trị nan nào bằng cách sử dụng bình đẳng không
numpy.isnan[arr]
Parameters:
arr = The input array to be passed to the function.
Return:
Returns a boolean array, True where element is NaN, false otherwise.
NAN là viết tắt của không phải là một số, đó là một loại dữ liệu số có thể được hiểu là một giá trị không xác định hoặc không thể hiện được. Các giá trị NAN thường được sử dụng để biểu diễn dữ liệu bị thiếu trong DataFrame hoặc một mảng Numpy.
Đưa ra một mảng numpy, chúng ta cần kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào hay không.
any[arr]
Parameters:
arr = The input array to be passed to the function.
Return:
Có nhiều cách để kiểm tra xem một mảng numpy có chứa bất kỳ giá trị NAN nào không. Hãy để thảo luận về tất cả các phương pháp từng một với một cách tiếp cận phù hợp và một ví dụ về mã làm việc.Cách tiếp cận
- Nhập thư viện Numpy và tạo một mảng Numpy
- Mô -đun Numpy trong Python, cung cấp một hàm numpy.isnan [], để kiểm tra xem một phần tử có phải là NAN hay không. Phương thức isnan [] sẽ lấy một mảng làm đầu vào và trả về một mảng boolean có cùng kích thước. Các giá trị trong mảng boolean biểu thị rằng nếu phần tử ở vị trí tương ứng đó trong mảng ban đầu là NAN hay không. Giá trị trong mảng boolean là đúng trong đó phần tử là nan, sai nếu không.
- Quảng cáo
- Cú pháp của isnan []
Mã nguồn
import numpy as np # Creating a NumPy array arr = np.array[[1, 2, 3, 4, np.NaN, 5, 6]] # Check if the NumPy array contains any NaN value if[np.isnan[arr].any[]]: print["The Array contain NaN values"] else: print["The Array does not contain NaN values"]
OUTPUT:
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
0Kiểm tra xem mảng numpy có chứa bất kỳ giá trị nan nào bằng phương thức isna [] không
Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng mô -đun toán học không
Kiểm tra xem một mảng numpy có giá trị nan nào bằng cách sử dụng bình đẳng không
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
1Parameters:
arr = The input array to be passed to the function.
Return:
NAN là viết tắt của không phải là một số, đó là một loại dữ liệu số có thể được hiểu là một giá trị không xác định hoặc không thể hiện được. Các giá trị NAN thường được sử dụng để biểu diễn dữ liệu bị thiếu trong DataFrame hoặc một mảng Numpy.Khi phương thức trả về một mảng boolean, chúng ta cần kiểm tra xem mảng có chứa ít nhất một giá trị thực, tức là giá trị nan không. Phương thức bất kỳ [] có thể được sử dụng để tìm nếu có ít nhất một giá trị thực. Bất kỳ [mảng] nào chấp nhận một mảng numpy làm đối số và phương thức trả về true nếu bất kỳ mục nào trong một mảng là đúng, nếu không nó sẽ trả về sai.any[arr] accepts a numpy array as argument and method returns True if any item in an array is True, otherwise it returns False.
Cách tiếp cận
- Nhập thư viện Numpy và tạo một mảng Numpy
- Bây giờ chuyển mảng đến phương thức isna []. Nó sẽ trả lại một mảng boolean. Trong đó giá trị thực biểu thị các giá trị NAN trong mảng gốc.
- Chuyển mảng boolean cho bất kỳ phương thức nào, bất kỳ [] sẽ trả về giá trị boolean
- Nếu giá trị là true in mảng có giá trị nan, thì bản in không có giá trị nan.
Mã nguồn
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
4OUTPUT:
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
0Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng phương pháp isnan [] của mô -đun toán học không
Mô -đun toán học trong python, cung cấp một hàm math.isnan [] để kiểm tra xem một phần tử có phải là NAN hay không. Phương thức isnan [] sẽ lấy giá trị làm đầu vào và trả về giá trị boolean, giá trị boolean được trả về đúng nếu phần tử là nan, sai nếu không ..
Bây giờ để kiểm tra xem có bất kỳ nan nào trong một mảng không, sử dụng vòng lặp cho không, chúng tôi sẽ lặp lại trên mảng và áp dụng phương thức isnan [] có giá trị NAN.
Cách tiếp cận
- Nhập thư viện Numpy và tạo một mảng Numpy
- Bây giờ chuyển mảng đến phương thức isna []. Nó sẽ trả lại một mảng boolean. Trong đó giá trị thực biểu thị các giá trị NAN trong mảng gốc.
- Chuyển mảng boolean cho bất kỳ phương thức nào, bất kỳ [] sẽ trả về giá trị boolean
- Nếu giá trị là true in mảng có giá trị nan, thì bản in không có giá trị nan.
- Mã nguồn
Mã nguồn
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
6OUTPUT:
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
0Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng phương pháp isnan [] của mô -đun toán học không
Mô -đun toán học trong python, cung cấp một hàm math.isnan [] để kiểm tra xem một phần tử có phải là NAN hay không. Phương thức isnan [] sẽ lấy giá trị làm đầu vào và trả về giá trị boolean, giá trị boolean được trả về đúng nếu phần tử là nan, sai nếu không ..
Bây giờ để kiểm tra xem có bất kỳ nan nào trong một mảng không, sử dụng vòng lặp cho không, chúng tôi sẽ lặp lại trên mảng và áp dụng phương thức isnan [] có giá trị NAN.
Cách tiếp cận
- Nhập thư viện Numpy và tạo một mảng Numpy
- Bây giờ chuyển mảng đến phương thức isna []. Nó sẽ trả lại một mảng boolean. Trong đó giá trị thực biểu thị các giá trị NAN trong mảng gốc.
- Chuyển mảng boolean cho bất kỳ phương thức nào, bất kỳ [] sẽ trả về giá trị boolean
- Nếu giá trị là true in mảng có giá trị nan, thì bản in không có giá trị nan.
- Mã nguồn
Mã nguồn
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
8OUTPUT:
#%%
N = 1000000 # 100000
perfplot.show[
setup=lambda p: array_with_missing_values[N, p],
kernels=[min, dot, has_nan],
n_range=np.array[[2 ** k for k in range[20]]] / 2**20 * 0.01,
logy=True,
xlabel=f"% of nan in array [N = {N}]",
]
0Kiểm tra xem một mảng numpy có bất kỳ giá trị nan nào bằng phương pháp isnan [] của mô -đun toán học không
Mô -đun toán học trong python, cung cấp một hàm math.isnan [] để kiểm tra xem một phần tử có phải là NAN hay không. Phương thức isnan [] sẽ lấy giá trị làm đầu vào và trả về giá trị boolean, giá trị boolean được trả về đúng nếu phần tử là nan, sai nếu không ..