是否有一种首选方法可以将numpy数组的数据类型固定为int(int64或者其他),同时仍然将内部元素列为numpy.NaN?
特别是,我正在将内部数据结构转换为Pandas DataFrame.在我们的结构中,我们有整数类型的列仍然有NaN(但列的dtype是int).如果我们把它变成一个DataFrame,它似乎将所有东西重铸为浮点数,但我们真的很喜欢int.
思考?
事情尝试:
我尝试使用from_records()pandas.DataFrame下的函数coerce_float=False,但这并没有帮助.我也尝试使用带有NaN fill_value的NumPy掩码数组,这也没有用.所有这些都导致列数据类型变为浮点数.
我是新来的,理想情况下,我会在我从哪里学到idxmax 的这种用法的问题上对此发表评论:
我使用了相同的方法,下面是我的代码
df = pd.DataFrame(np.arange(16).reshape(4,4),columns=["A","B","C","D"],index=[0,1,2,3])
Run Code Online (Sandbox Code Playgroud)
一旦我df[(df>6)]在这个 df 上使用,这些 int 值就会变为浮点数吗?
A B C D
0 NaN NaN NaN NaN
1 NaN NaN NaN 7.0
2 8.0 9.0 10.0 11.0
3 12.0 13.0 14.0 15.0
Run Code Online (Sandbox Code Playgroud)
熊猫为什么要这样做?另外,我在某个地方读到我可以在系列上使用 dtype=object ,但是还有其他方法可以避免这种情况吗?
我知道如何使用NumPy的np.fromfile()函数在Python中读取二进制文件.我面临的问题是,当我这样做时,数组的数量非常大,大约为10 ^ 100左右,具有随机值nan和inf值.
我需要将机器学习算法应用于此数据集,我无法使用此数据.由于nan值,我无法规范化数据集.
我尝试过,np.nan_to_num()但似乎没有用.这样做之后,我的最小值和最大值分别为3e-38和3e + 38,所以我无法将其标准化.
有没有办法缩小这些数据?如果没有,我应该如何处理?
谢谢.
编辑:
一些背景.我正在研究恶意软件分类问题.我的数据集由实时恶意软件二进制文件组成.它们是.exe,.apk等类型的文件.我的想法是将这些二进制文件存储为numpy数组,转换为灰度图像,然后对其执行模式分析.