arrays - numpy 数组是否有 info 函数?
问题描述
我正在寻找一些函数,它返回关于numpy.ndarray的最重要信息。通常,我打印数组并得到完全错误的印象,因为字符串转换只显示最外部的元素。
实际上,我不时会涉及以下问题:
- 只是外部元素是 nan,但它也包含非 nan 条目
- 某处隐藏了一个 nan 值,因此有必要使用 nan-save 函数(例如np.nanmean()而不是np.mean())
np.inf
发生,这会阻止对有限值的值范围的任何简单概述
该pandas
库具有例如DataFrame.info()方法。numpy中有挂件吗?
解决方案
目前我使用一种解决方法给我这样的结果
np.ndarray of shape (5, 11)
---
dtype: float64
contains non-finite elements: nan, inf
---
mean: 8.375849056603775
min: 0.0
max: 16.74
---
std: 4.9867932880730885
mad: 6.434493628314312
---
values:
[[ 0. 0.31 0.62 0.93 1.24 1.55 1.86 2.17 2.48 2.79 3.1 ]
[ 3.41 3.72 4.03 4.34 4.65 4.96 5.27 inf 5.89 6.2 6.51]
[ 6.82 7.13 7.44 7.75 8.06 8.37 8.68 8.99 9.3 9.61 9.92]
[10.23 10.54 nan 11.16 11.47 11.78 12.09 12.4 12.71 13.02 13.33]
[13.64 13.95 14.26 14.57 14.88 15.19 15.5 15.81 16.12 16.43 16.74]]
这是代码:
import numpy as np
from statsmodels.robust import mad
def ndarray_info(arr, verbose=2):
"""returns extensive information about an np.ndarray as string"""
finArr = arr.flatten()
finArr = finArr[np.isfinite(finArr)]
info = ''
info += f'np.ndarray of shape {arr.shape}\n'
info += '\t---\n'
info += f'\tdtype: {arr.dtype}\n'
info += f'\tcontains non-finite elements: '
nonFinElLst = []
if np.isnan(arr).any():
nonFinElLst += ['nan']
if np.isinf(arr).any():
nonFinElLst += ['inf']
if len(nonFinElLst) > 0:
info += ', '.join(nonFinElLst) + '\n'
else:
info += '--\n'
info += '\t---\n'
info += f'\tmean: {np.mean(finArr)}\n'
info += f'\tmin: {np.min(finArr)}\n'
info += f'\tmax: {np.max(finArr)}\n'
if verbose >=1:
info += '\t---\n'
info += f'\tstd: {np.std(finArr)}\n'
info += f'\tmad: {mad(finArr)}\n'
if verbose >=2:
info += '\t---\n'
info += 'values:\n' + str(arr) + '\n'
return info
arr= np.arange(0,17,.31).reshape(5,11)
arr[3,2] = np.nan
arr[1,7] = np.inf
print(ndarray_info(arr))
推荐阅读
- autodesk-forge - 如何获取渲染 rvt 3d 模态的所有成员属性详细信息
- python - 可以将链接放在文档字符串中吗?
- django - 如何在 django-graphql-auth 中使用自定义注册突变
- ios - 从 GitHub 运行项目
- mongodb - collection.insertOne(doc).results() 方法不可用
- python - 如何将两个嵌套列表合并为字典?
- python - 如何预测不超过目标示例?
- angular6 - @input 不适用于 Api 响应值 - 角度
- jenkins - 是否可以从 SonarQube 触发 Jenkins/TeamCity?
- google-bigquery - 在 BigQuery 中创建外部分区表时,它说:Specifying a schema is disallowed for STORAGE_FORMAT_AVRO