gpt4 book ai didi

python - 在 Python 与 Matlab 中减去 3D numpy 数组

转载 作者:太空狗 更新时间:2023-10-30 02:20:15 25 4
gpt4 key购买 nike

我有两个 3D numpy 数组,我想找出它们之间的区别。

>>>A.dtype
dtype('uint32')
>>>B.dtype
dtype('uint32')
>>>A.shape
(86, 50, 108)
>>>B.shape
(86, 50, 108)
>>>A.min()
0
>>>B.min()
0
>>>A.max()
89478487
>>>B.max()
89115767

现在,如果我们执行 A - B

>>> diff = abs( A-B );
>>> diff.min()
0
>>> diff.max()
4294967292

考虑到两个矩阵的 minmax 值,我们不能将 4294967292 作为差分矩阵的最大值。我在Matlab中也做过类似的操作,差分diff和最大值diff.max()是一致的。 A-B 操作到底在做什么?我的理解是,数组之间的加减乘除默认行为是按元素操作,但这里发生了一些有趣的事情。

最佳答案

您正在使用无符号 32 位整数。所以你会溢出

>>> numpy.uint32(0) - numpy.uint32(1)
4294967295

尝试将数组的类型更改为 int ...

>>> A = numpy.array([0,1,2],'uint32')
>>> B = numpy.array([1,2,3],'uint32')
>>> A-B
array([4294967295, 4294967295, 4294967295], dtype=uint32)
>>> A = A.astype(int)
>>> B = B.astype(int)
>>> A-B
array([-1, -1, -1])

关于python - 在 Python 与 Matlab 中减去 3D numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com