任意精度的numpy数组(10位int)

时间:2018-02-23 18:28:16

标签: python numpy int precision

我需要模拟一个生成二进制文件的硬件,每个字都是10位。如何使用numpy数组实现这一目标?

类似的东西:

outarray = np.zeros(512, dtype=np.int10)

谢谢!

2 个答案:

答案 0 :(得分:2)

Numpy没有uint10类型。但是您可以使用uint16和位掩码来检查溢出。并使用binary_rep获取10位二进制表示:

import numpy as np

MAX_WORD = 2**10
unused_bits = ~np.array([MAX_WORD-1], dtype="uint16")  # Binary mask of the 6 unused_bits

words = np.random.randint(MAX_WORD, size=10, dtype="uint16")  #  Create 10 bit words
assert not np.any(words & unused_bits)  # Check for overflow
for word in words:
    print(word, np.binary_repr(word, width=10))  # Get 10 bit binary representation

binary_repr = "".join(np.binary_repr(word, width=10) for word in words)
print(binary_repr)  # Full binary representation

答案 1 :(得分:0)

如果您主要想了解10位数字算术运算的准确性,那么您可以考虑的另一个选择是使用spfpm包。这将模拟定点逻辑运算的效果,包括乘法,除法,平方根,三角函数等,但目前还不支持矩阵运算。