python - 如何使用 NumPy 在 Python 中读取二进制文件?

标签 python numpy machine-learning data-mining

我知道如何使用 NumPy 的 np.fromfile() 函数在 Python 中读取二进制文件。我面临的问题是,当我这样做时,该数组具有 10^100 左右的非常大的数量,具有随机 naninf 值.

我需要将机器学习算法应用于此数据集,但我无法使用此数据。由于 nan 值,我无法规范化数据集。

我试过 np.nan_to_num() 但这似乎不起作用。这样做之后,我的最小值和最大值分别在 3e-38 和 3e+38 之间,所以我无法对其进行归一化。

有什么方法可以缩减这些数据吗?如果不是,我该如何处理?

谢谢。

编辑:

一些上下文。我正在研究恶意软件分类问题。我的数据集由实时恶意软件二进制文件组成。它们是 .exe、.apk 等类型的文件。我的想法是将这些二进制文件存储为一个 numpy 数组,转换为灰度图像,然后对其进行模式分析。

最佳答案

如果您想从二进制文件中生成图像,您需要将其作为整数而不是 float 读入。目前,最常见的图像格式是无符号 8 位整数。

例如,让我们用/bin/bash 的前 10,000 个字节制作一个图像:

>>> import numpy as np
>>> import cv2
>>> xbash = np.fromfile('/bin/bash', dtype='uint8')
>>> xbash.shape
(1086744,)
>>> cv2.imwrite('bash1.png', xbash[:10000].reshape(100,100))

在上面,我们使用 OpenCV 库将整数写入 PNG 文件。可以使用其他几个成像库中的任何一个。

bash 的前 10,000 个字节“看起来”像这样:

enter image description here

关于python - 如何使用 NumPy 在 Python 中读取二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39762019/

相关文章:

python - 按与 Django User 的 ManyToMany 关系过滤模型

python - Windows 上没有名为 pylab 的模块

python - 如何在 emacs 中使用 elpy 正确设置 Jedi?

python - 如何用另一列中的每个值减去一个列值( Pandas )

numpy - 我的功率谱可信吗? lomb-scargle 和 fft 之间的比较(scipy.signal 和 numpy.fft)

python - TensorFlow 中的最大 margin 损失

python - 返回 Keras 中 EarlyStopping 回调的纪元数

python - 如何在 openCV python 中使用 HoughLines 变换准确检测线条?

machine-learning - 对于 98% 的列都是空值的数据集,我们能做什么呢?

python - 为什么 MLP 的成本函数会趋于平坦?