【问题标题】:Changing the default data type in numpy.asarray更改 numpy.asarray 中的默认数据类型
【发布时间】:2023-03-10 14:51:01
【问题描述】:

我在我的项目中使用numpy.asarray 来处理数组,因为它与默认的 Python 列表相比效率更高。在分配数组时,我还应该注意内存利用率,因为我的程序可以接收千兆字节的大数据。在检查numpy.asarray 时,我发现除非另有说明,否则数据类型是从数组本身推断出来的。因此,我有以下数组:

np.asarray([list(map(int, list(x))) for x in X])

当我打印print X.dtype 时,我得到了int64。由于这里的数组X 总是包含二进制值,0 或1,所以我想使用dtype=np.int8 来减少分配空间时所需的内存。但我不确定这是否是个好主意!我应该坚持使用默认的int64 吗? int8 会丢失任何我想不到的数据精度吗?

谢谢。

【问题讨论】:

    标签: python arrays python-2.7 numpy


    【解决方案1】:

    来自NumPy Manual

    数组类型和类型之间的转换

    Data type    Description
    
    ...
    int8         Byte (-128 to 127)
    ...
    

    如果您只打算将二进制值放入数组中,那就没问题了。您不会丢失任何数据精度。


    您甚至可以考虑将数据类型设置为bool_,它以字节形式存储,绝对是您记忆的最佳解决方案,也可以用作int

    >>> import numpy as np
    >>> x = np.asarray([1,0,1,0], dtype=np.bool_)
    >>> x
    array([ True, False,  True, False], dtype=bool)
    >>> x + 2
    array([3, 2, 3, 2])
    

    【讨论】:

    • 非常感谢。你能解释一下如何实现bool_ 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多