gpt4 book ai didi

python - 将 "complex array"拆分为 "real"和 "imaginary"数组的快捷方式

转载 作者:行者123 更新时间:2023-12-05 04:00:57 26 4
gpt4 key购买 nike

假设我有一个 numpy 数组:

import numpy as np

x = np.array((1 + 2j, 2 + 4j, 5 + 10j))

我想创建两个单独的数组,一个是实数部分,另一个是不带 j 的复数部分。在 python 中是否有执行此操作的快捷方式?我能想到的唯一方法是明确地:

xr = np.zero(len(x))
xi = np.zero(len(x))
for n in range(0, len(x)):
xr[m] = x[n].real
xi[m] = x[n].imag

不知道,似乎应该有一种更快的输入方式...

喜欢

xr = x.real?
xi = x.imag?

最佳答案

In [145]: x = np.array((1 + 2j, 2 + 4j, 5 + 10j))                                    
In [146]: x
Out[146]: array([1. +2.j, 2. +4.j, 5.+10.j])

realimag 属性对整个数组和元素都有效:

In [147]: x.real                                                                     
Out[147]: array([1., 2., 5.])
In [148]: x.imag
Out[148]: array([ 2., 4., 10.])
In [149]: xr, xc = x.real, x.imag
In [150]: xr
Out[150]: array([1., 2., 5.])
In [151]: xc
Out[151]: array([ 2., 4., 10.])

@user3483203 建议的 view 方法告诉它将同一个数据缓冲区解释为两个 float 的序列:

In [156]: x.view('(2,)float')                                                        
Out[156]:
array([[ 1., 2.],
[ 2., 4.],
[ 5., 10.]])
In [157]: np.dtype('(2,)float')
Out[157]: dtype(('<f8', (2,)))

除非您已经使用过结构化数组和复合数据类型,否则这种表示法可能会很晦涩。

关于python - 将 "complex array"拆分为 "real"和 "imaginary"数组的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55765443/

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