NumPy是否正确处理复数操作的1:1别名?

时间:2017-06-09 02:18:55

标签: python arrays numpy aliasing

ab是不相交的1D complex NumPy数组,我做numpy.multiply(a, b, b)
b是否保证包含与通过b[:] = numpy.multiply(a, b)获得的值相同的值?

我实际上并没有能够产生不正确的结果,但我不知道我是否只是对我的特定编译或平台感到幸运,或者我是否真的可以依赖它,因此问题。

注意使用float(即实数)答案显然是肯定的,因为合理的实施不能使其失败,但是对于复数而言,交叉很容易通过编写实部并且然后读取虚部来乘以操作以得到不正确的结果:

# say the real part is at [0] and the imaginary part is at [1] and c is the product of a & b
c[0] = a[0] * b[0] - a[1] * b[1]
c[1] = a[0] * b[1] + a[1] * b[0]  # if c[0] overlaps a[0] or b[0] then this is wrong

1 个答案:

答案 0 :(得分:1)

是。复杂的价值应该原子地处理。如果它不能那样工作,那么这是我们要修复的错误。