python - 为什么 NumPy 对数组和标量返回不同的类型?

标签 python arrays numpy type-conversion numpy-ndarray

我在 np.float64 数组和标量中存储了一些整数,我想将其转换为原生 Python int

这是我的尝试:

import numpy as np

a = np.array([1, 2, 3], dtype=np.float64)
b = np.float64(4)

def float_to_int(x):
    x_object = x.astype(object)
    return np.floor(x_object)

# Array inputs are converted to int
print(type(float_to_int(a)[0]))
# >> <class 'int'>

# Scalar inputs are left as np.float64
print(type(float_to_int(b)))
# >> <class 'numpy.float64'>

这里有 3 件事我不明白:

  1. 为什么标量和数组的类型转换不同?
  2. 为什么np.floor()要进行类型转换(对于数组输入)?
  3. 如何可靠地将标量和数组的 np.float64 转换为 int

最佳答案

我相信,由于 Numpy 和 python 数据类型相关但本质上不同,因此您必须将其显式转换为 python 数据类型。

一种方法是:

a = a.astype(np.int64).tolist()
b = int(b)

或者

a = a.astype(np.int64).astype(object)
b = b.astype(np.int64).astype(object)

当您将 numpy 数组转换为 object 时数据类型,它在内部将其存储为 python 对象。对象数据类型很灵活,并且可以在转换过程中进行推断。

关于python - 为什么 NumPy 对数组和标量返回不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76693541/

相关文章:

php - 在php中递归搜索所有目录中的字符串数组

python - 除了 to_pickle 之外,序列化 DataFrame 最快的方法是什么?

python - 为什么 mystring.split ("").append ("foo") 什么都不返回?

python - Numpy 同时使用 fromiter 创建两个数组

python - 使用 BS4 python 进行抓取

Javascript-如何以字符串作为参数返回数组?

python - 将 YUV 导入为字节数组

python - 标准化 Scipy 稀疏矩阵的有效方法

python - Spark : More Efficient Aggregation to join strings from different rows

python - 以安全正确的方式使用 RandomForestClassifier 的 predict_proba() 函数