Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将两个uint16 numpy数组相减以高效地生成一个int16 numpy数组_Python_Arrays_Numpy - Fatal编程技术网

Python 如何将两个uint16 numpy数组相减以高效地生成一个int16 numpy数组

Python 如何将两个uint16 numpy数组相减以高效地生成一个int16 numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我有两个必须减去的'type=np.uint16'numpy数组(我们称它们为A和B)。 我必须考虑执行A-B可能导致一些负面条目的可能性。为了避免溢出,我希望能够执行 diff = A - B 这样,diff将转换为np.int16 numpy数组。 如何在Python中高效地执行此操作 如果我这样做: diff = np.zeros(height*width, dtype=np.int16) 然后表演 diff = A - B 我还是觉得满溢。我特意将B的某些值设置为大于A中的值,以便

我有两个必须减去的'type=np.uint16'numpy数组(我们称它们为A和B)。 我必须考虑执行A-B可能导致一些负面条目的可能性。为了避免溢出,我希望能够执行

diff = A - B
这样,diff将转换为np.int16 numpy数组。 如何在Python中高效地执行此操作

如果我这样做:

diff = np.zeros(height*width, dtype=np.int16)
然后表演

diff = A - B

我还是觉得满溢。我特意将B的某些值设置为大于A中的值,以便发生of。

so
np。uint16
不能包含负值。。你想要什么?@farhawa这是正确的,因为我确信A和B不包含负值。但B中的某些值可能大于A中的相应值,因此这样做会导致某些值溢出。我不希望也能保留负值,而且基本上不会溢出。一个(也是唯一一个)解决方案是使用另一个
dtype
@farhawa。。我懂了!当我计算A和B时,使用np.int32会比使用np.uint16慢吗?或者您认为使用浮点会更好吗?在现代CPU和前端总线上,int32不应该比int16快或慢,但您可以进行基准测试。float32将无法捕获所有整数>=
2**24
(即
int(np.float32(2**24+1))-(2**24+1)
),因此您可能不希望这样。但int32将占用2倍的内存。测试所有三种可能性并对它们进行基准测试应该很容易。