如何将`numpy.finfo`应用于Polars数据类型?
如何将
numpy.finfo应用于Polars数据类型? 嘿,这个问题我之前也碰到过!其实有两个简单的办法来解决,咱们一步步说:
方法1:将Polars dtype转成NumPy dtype后用numpy.finfo
Polars的每个数值类型dtype对象都自带了to_numpy_dtype()方法,不用转换整个数组,直接对dtype本身调用就能拿到对应的NumPy dtype,之后就可以正常用numpy.finfo获取你需要的max或者eps了。
举个实际的代码例子:
import polars as pl import numpy as np # 针对单独的Polars dtype pl_float64 = pl.Float64 np_dtype = pl_float64.to_numpy_dtype() # 获取最大值和最小增量 print(f"Float64最大值: {np.finfo(np_dtype).max}") print(f"Float64最小增量: {np.finfo(np_dtype).eps}") # 针对DataFrame列的dtype df = pl.DataFrame({"num_col": [3.14, 2.718]}) col_dtype = df["num_col"].dtype col_np_dtype = col_dtype.to_numpy_dtype() print(f"列的最小增量: {np.finfo(col_np_dtype).eps}")
方法2:直接用Polars dtype自带的极值属性
如果只是需要获取最大值或最小值,Polars的数值dtype本身就有max_value和min_value属性,连NumPy都不用调用,直接就能拿到:
print(f"Polars Float32最大值: {pl.Float32.max_value}") print(f"Polars Float64最小值: {pl.Float64.min_value}")
不过要注意,目前Polars的dtype还没有直接提供类似eps的属性,这时候用第一种转NumPy的方法就最合适啦。
备注:内容来源于stack exchange,提问作者Luca B.
相关产品推荐
相关产品推荐

