【发布时间】:2020-11-27 11:48:09
【问题描述】:
我不明白为什么这个格式化程序不能格式化complex128:
import numpy as np
import scipy.sparse as sp
A = sp.diags([1, -2, 1], [1, 0, -1], shape=[3, 3], format='csc')
evals, evecs = sp.linalg.eigs(A, k=1, which='LM')
with np.printoptions(formatter={'complex_kind': '{:.2f}'.format}):
print (evals, evals[0])
此代码显示一个单元素 numpy.ndarray,然后是元素。格式化程序用于数组,而不是单独用于元素:
[-3.41+0.00j] (-3.4142135623730954+0j)
涉及的类型:
type(evals): numpy.ndarray
evals.dtype: dtype('complex128')
type(evals[0]): numpy.complex128
任何线索表示赞赏。
【问题讨论】:
-
evals[0]是 python 复合体,而不是numpy数组。 -
它不是一个 numpy 复合体。你必须直接使用python格式化。
-
这是一个
numpy.complex128,但printoptions的设置只适用于打印数组,而不是numpy标量。 -
这里还有一个关于这个问题的讨论:github.com/numpy/numpy/issues/11048
标签: python scipy format numpy-ndarray