首先,这并不是针对mp的内容,但是由于它是在评论中提出的:
np.matrix可以接受一个字符串参数,并从中生成一个数值矩阵。还要注意形状是(1,1)In [145]: a = np.matrix('28534314.10478439+28534314.10478436j')
In [146]: a
Out[146]: matrix([[28534314.10478439+28534314.10478436j]])
In [147]: a.dtype
Out[147]: dtype('complex128')
输入到np.array的字符串将生成一个字符串:
^{pr2}$
但是省略引号,我们就得到了一个复杂的数组,其形状为()(0d):In [151]: a = np.array(28534314.10478439+28534314.10478436j)
In [152]: a
Out[152]: array(28534314.10478439+28534314.10478436j)
In [153]: a.dtype
Out[153]: dtype('complex128')
这些值的乘积:In [154]: b = np.array(-1.39818115e+09+1.39818115e+09j)
In [155]: a*b # a.dot(b) same thing
Out[155]: (-7.979228021897728e+16+48j)
如果不使用mp,我假设初始化和设置如下所示:In [179]: x=np.empty_like(np.matrix([[0]*(1) for i in range(1)])).astype(np.complex128)
In [180]: x[:]=a
In [181]: x
Out[181]: matrix([[28534314.10478439+28534314.10478436j]])
In [182]: y=np.empty_like(np.matrix([[0]*(1) for i in range(1)])).astype(np.complex128)
In [183]: y[:]=b
In [184]: y
Out[184]: matrix([[-1.39818115e+09+1.39818115e+09j]])
In [185]: x*y
Out[185]: matrix([[-7.97922802e+16+48.j]])
可能值得尝试np.zeros_like而不是{}。这将确保虚部为0,而不是随机的。如果mp进程只是设置实际的部分,那么您应该得到不同的结果。在
这篇博客讨论了在numpy中创建和操作复数时遇到的不一致情况。通过比较np.matrix和np.array对复数字符串的处理,以及它们之间的乘法运算结果,揭示了潜在的差异和可能产生的误解。文章通过实例展示了如何初始化和设置复数数组,并提醒读者在处理复数时需要注意的细节。
1430

被折叠的 条评论
为什么被折叠?



