日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

numpy中np.nanmax和np.max的區(qū)別及坑_python

作者:AML杰 ? 更新時(shí)間: 2022-04-18 編程語言

np.nanmax和np.array([1,2,3,np.nan]).max()的區(qū)別

numpy中numpy.nanmax的官方文檔

原理

在計(jì)算dataframe最大值時(shí),最先用到的一定是Series對(duì)象的max()方法(),最終結(jié)果是4。

s1 = pd.Series([1,2,3,4,np.nan])
s1_max = s1.max()

但是筆者由于數(shù)據(jù)量巨大,列數(shù)較多,于是為了加快計(jì)算速度,采用numpy進(jìn)行最大值的計(jì)算,但正如以下代碼,最終結(jié)果得到的是nan,而非4。發(fā)現(xiàn),采用這種方式計(jì)算最大值,nan也會(huì)包含進(jìn)去,并最終結(jié)果為nan。

s1 = pd.Series([1,2,3,4,np.nan])
s1_max = s1.values.max()
>>>nan

通過閱讀numpy的文檔發(fā)現(xiàn),存在np.nanmax的函數(shù),可以將np.nan排除進(jìn)行最大值的計(jì)算,并得到想要的正確結(jié)果。

當(dāng)然不止是max,min 、std、mean 均會(huì)存在列中含有np.nan時(shí),s1.values.min /std/mean ()返回nan的情況。

速度區(qū)別

速度由快到慢依次:

s1 = pd.Series([1,2,3,4,5,np.nan])
#速度由快至慢
np.nanmax(s1.values) > np.nanmax(s1) > s1.max()?

numpy中nan和常用方法

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# Author: Jia ShiLin
 
import numpy as np
 
a = np.arange(9, dtype=float).reshape(3, 3)
a[[[1], [2]]] = np.nan
print(a)
# isnan函數(shù)
print(np.isnan(a))
a[np.isnan(a)] = 0  # 把nan替換成中值或者均值
print(a)
 
print(np.count_nonzero(a))
 
# sum()統(tǒng)計(jì)求和
b = np.arange(12, dtype=int).reshape(2, 6)
print(b)
print(np.sum(b, axis=0))  # 得到結(jié)果和行的形狀一樣
print(np.sum(b, axis=1))
# .mean()
print(b.mean())
print(b.mean(axis=0))
print(b.mean(axis=1))
# np.median()中位數(shù)
print(np.median(b, axis=0))
# .min() .max()
# .ptp()機(jī)值
print(np.ptp(b))
# .std()標(biāo)注差
print(np.std(b, axis=0))

原文鏈接:https://blog.csdn.net/xu136090331/article/details/94667987

欄目分類
最近更新