将复数的 numpy 矩阵导出为 CSV
Export a numpy matrix of complex numbers to CSV
我在 Python 中遇到以下问题。假设 numpy.matrix
个实体为 dtype
的 A 为 complex128
。我想以 CSV 格式导出 A,以便条目用逗号分隔,并且输出文件中的每一行对应于 A 的一行。我还需要 18 个小数点的实部和虚部精度,并且在一个例如条目我需要这个
`6.103515626000000000e+09+1.712134684679831166e+05j`
而不是
`6.103515626000000000e+09 + 1.712134684679831166e+05j`
以下命令有效,但仅适用于 1×1 矩阵
numpy.savetxt('A.out', A, fmt='%.18e%+.18ej', delimiter=',')
如果我使用:
numpy.savetxt('A.out', A, delimiter=',')
有两个问题。首先,我不知道默认保留了多少个小数点。其次,每个复杂的条目都放在括号中,如
(6.103515626000000000e+09+1.712134684679831166e+05j)
我无法在 Matlab 中读取文件。
你有什么建议?
这可能不是在大矩阵中转换数据的最有效方式,我相信存在更有效的单行代码解决方案,但您可以尝试执行下面的代码,看看是否可行作品。在这里,我将使用 pandas 将数据保存到 csv 文件。生成的 csv 文件中的第一列分别是您的实部和虚部。这里我也假设输入矩阵的维度是Nx1.
import pandas as pd
import numpy as np
def to_csv(t, nr_of_decimal = 18):
t_new = np.matrix(np.zeros((t.shape[0], 2)))
t_new[:,:] = np.round(np.array(((str(np.array(t[:])[0][0])[1:-2]).split('+')), dtype=float), decimals=nr_of_decimal)
(pd.DataFrame(t_new)).to_csv('out.csv', index = False, header = False)
#Assume t is your complex matrix
t = np.matrix([[6.103515626000000000e+09+1.712134684679831166e+05j], [6.103515626000000000e+09+1.712134684679831166e+05j]])
to_csv(t)
我在 Python 中遇到以下问题。假设 numpy.matrix
个实体为 dtype
的 A 为 complex128
。我想以 CSV 格式导出 A,以便条目用逗号分隔,并且输出文件中的每一行对应于 A 的一行。我还需要 18 个小数点的实部和虚部精度,并且在一个例如条目我需要这个
`6.103515626000000000e+09+1.712134684679831166e+05j`
而不是
`6.103515626000000000e+09 + 1.712134684679831166e+05j`
以下命令有效,但仅适用于 1×1 矩阵
numpy.savetxt('A.out', A, fmt='%.18e%+.18ej', delimiter=',')
如果我使用:
numpy.savetxt('A.out', A, delimiter=',')
有两个问题。首先,我不知道默认保留了多少个小数点。其次,每个复杂的条目都放在括号中,如
(6.103515626000000000e+09+1.712134684679831166e+05j)
我无法在 Matlab 中读取文件。
你有什么建议?
这可能不是在大矩阵中转换数据的最有效方式,我相信存在更有效的单行代码解决方案,但您可以尝试执行下面的代码,看看是否可行作品。在这里,我将使用 pandas 将数据保存到 csv 文件。生成的 csv 文件中的第一列分别是您的实部和虚部。这里我也假设输入矩阵的维度是Nx1.
import pandas as pd
import numpy as np
def to_csv(t, nr_of_decimal = 18):
t_new = np.matrix(np.zeros((t.shape[0], 2)))
t_new[:,:] = np.round(np.array(((str(np.array(t[:])[0][0])[1:-2]).split('+')), dtype=float), decimals=nr_of_decimal)
(pd.DataFrame(t_new)).to_csv('out.csv', index = False, header = False)
#Assume t is your complex matrix
t = np.matrix([[6.103515626000000000e+09+1.712134684679831166e+05j], [6.103515626000000000e+09+1.712134684679831166e+05j]])
to_csv(t)