python - 为什么 numpy max 函数(np.max)返回错误的输出?
问题描述
我有pandas DataFrame
,我把它变成了。我在我的 DataFrame 中为一列numpy ndarray
使用函数,如下所示:max
print('column: ',df[:,3])
print('max: ',np.max(df[:,3]))
输出是:
column: [0.6559999999999999 0.48200000000000004 0.9990000000000001 ..., 1.64 nan 0.07]
max: 0.07
但正如您所看到的,例如第一个值大于 0.07!问题是什么?
解决方案
这里有两个问题
看起来您正在尝试查找最大值的列具有数据类型
object
。如果您确定列应该包含数字数据,则不建议这样做,因为它不仅在这种特殊情况下可能会导致不可预测的行为。请检查您的数据框的数据类型(您可以通过键入来执行此操作df.dtypes
)并更改它以使其与您期望的数据相对应(对于这种情况df[column_name].astype(np.float64)
)。这也是np.nanmax
不能正常工作的原因。您不想
np.max
在包含 nans 的数组上使用。
解决方案
如果您确定
object
列的数据类型:1.1。您可以使用 Series 的 max 方法,它应该自动将数据转换为浮动。
df.iloc[3].max()
1.2. 您只能为 nanmax 函数将数据转换为适当的类型。
np.nanmax(df.values[:,3].astype(np.float64)
1.3 您可以从数据框中删除所有 nan 并找到 max[不推荐]:
np.max(test_data[column_name].dropna().values)
如果您的数据类型是 float64 并且它不应该是
object
数据类型 [推荐]:df[column_name] = df[column_name].astype(np.float64) np.nanmax(df.values[:,3])
说明问题的代码
#python
import pandas as pd
import numpy as np
test_data = pd.DataFrame({
'objects_column': np.array([0.7,0.5,1.0,1.64,np.nan,0.07]).astype(object),
'floats_column': np.array([0.7,0.5,1.0,1.64,np.nan,0.07]).astype(np.float64)})
print("********Using np.max function********")
print("Max of objects array:", np.max(test_data['objects_column'].values))
print("Max of floats array:", np.max(test_data['floats_column'].values))
print("\n********Using max method of series function********")
print("Max of objects array:", test_data["objects_column"].max())
print("Max of floats array:", test_data["objects_column"].max())
回报:
********Using np.max function********
Max of objects array: 0.07
Max of floats array: nan
********Using max method of series function********
Max of objects array: 1.64
Max of floats array: 1.64
推荐阅读
- java - 来自主要参数查找的 JDBCAppender tableName
- javascript - Gatsby 在 GitHub Actions CI 中运行时抛出 SIGSEV 错误
- karate - 空手道框架“no-auth”授权问题
- python - 如何从扫描的 pdf 图像中提取分块内容?
- python - Python 中烛台/OHLC 数据的模板匹配
- c# - 为什么在这种情况下会出现“类型是在未引用的程序集中定义的”?
- python - 与 cupy 的自相关
- javascript - Javascript正则表达式解析复杂的url字符串
- python - 提交时手动呈现 Django formset 重定向问题
- postgresql - Postgresql pg_profile 在创建快照时出错