python - 在 Python 中读取科学记数法的指数

标签 python pandas numpy scientific-notation

我正在尝试生成一组汇总数据,所以我不关心数字本身我只关心指数 - 目标是找到 7 位数字的总数(例如电话数)。我目前处理这个问题的方式非常简单

我有一个 CSV 格式的数据集,它看起来像这样:

“1.108941100000000000e+07, 4.867837000000000000e+06, ……”

# numlist is the dataset

x = np.trunc(np.log10(numlist))    
total = (x == 6).sum()

这给了我 7 位数字的数量。当我选择这种方法时,我假设输入将是一个整数列表,但现在我看到数据实际上可以以科学计数法给出/存储。如果它以科学记数法给出,是否有更快的方法来获得相同的结果?有没有一种方法可以从 csv 文件加载指数并完全跳过 log10 行为?

此外,我并不局限于使用 numpy 数组,但经过一些实验后,它们是实现我的目的最快的实现方式。

最佳答案

您可能希望编写自定义解析器以在读取文件时使用,而不是读取所有数据只是为了稍后将其丢弃。

大小为 n

的指数计数
def count_exponents(path, n):
    n_str = 'e+0' + str(n)
    out = 0
    with open(path) as fp:
        for line in fp:
            out += line.count(n_str)
    return out

返回指数

import re
pattern = re.compile('e([+\-]\d+)')

def get_exponents(path):
    with open(path) as fp:
        out = [pattern.findall(line) for line in fp]
    return out

关于python - 在 Python 中读取科学记数法的指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50778103/

相关文章:

用于操作非常大的矩阵的 Python 库

python - 使用 numpy 测试一个数组中的每个元素是否存在于另一个数组中的最有效方法

python - 以下 Python 代码有什么问题?

Python - 文本文件数据可以存储在代码中吗?

python - 有没有为 AVX 指令编译的 TensorFlow 版本?

python - 应用操作连接数据帧中的某些行重新调整无

python - 将时间序列转换为数据帧,使得每一行都有连续的时间片

python - 请帮我解决 else if 在 python 中的循环?

python - 如何为 pandas 数据框中的一行中的连续零构建掩码(True 或 False)?

python - 如何在 pandas 中生成不包含索引的 json 文件?