python - 是否有一个 Numpy 函数可以将一个元素转换为与其他元素不同的类型?

标签 python numpy

我的代码如下:

file_ = open('file.txt', 'r')
lines = file_.readlines()
data = []
for row in lines:
    temp = row.split()
    data.append(np.array(temp).astype(np.float64))

我想将数组中的每一项都转换为 float ,除了最后一项,我想保留最后一项。

我该怎么做?

最佳答案

不,没有函数可以将同一数组的元素转换为不同类型。与常规 Python 列表不同,numpy 数组是同构的,并且存储具有固定物理记录大小的元素,因此数组的每个元素必须始终具有相同的类型。

您可以单独处理字符串并仅将数字部分解析为 numpy 数组:

for row in lines:
    temp = row.split()
    numbers = temp[:-1]
    stringbit = temp[-1]
    data.append(np.array(numbers).astype(np.float64))

或者,如果您的数据非常一致并且每行始终具有相同的类型结构,您也许可以使用更复杂的 numpy dtype 和 numpy.genfromtext使每一行成为一个更大数组的元素。

您可能还会找到pandas.DataFrame更适合处理这种异构数据。

包含有用详细信息的相关问题:NumPy array/matrix of mixed types

关于python - 是否有一个 Numpy 函数可以将一个元素转换为与其他元素不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69565023/

相关文章:

python - Numpy astype "upcasting"数组而不是跨列应用数据类型

python - Django 表单不显示,只有按钮(新)

python - Numpy 获取具有当前值的邻居索引的最快方法(洪水填充)

python - 偏导数线性回归的随机梯度下降

python - 如何使用多个 numpy 1d 数组创建 pandas DataFrame?

python - 如何通过一系列列名从数据框中选择值?

在 guard 和 result 中具有相同功能的 Python 列表理解

python - 是否可以用 i,j,k 格式编写 vector ?

python - 从 SQLAlchemy+Postgres 中的 IntegrityError 中获取约束名称

c++ - 实现nd数组时如何处理C++中的 "out of range"异常