You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy中set_printoptions()报错:意外关键字参数'sign'求助

解决numpy set_printoptions的sign参数报错问题

问题背景

你想要用numpy打印带额外空格的单位矩阵,比如输入3 3时期望得到:

[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]]

你写的代码是这样的:

import numpy
numpy.set_printoptions(sign =' ')
N, M = input().split(' ')
print(numpy.eye(int(N), int(M)))

但运行时却碰到了类型错误:

TypeError: set_printoptions() got an unexpected keyword argument 'sign'

你提到代码在Python3在线编辑器里能正常运行,但本地用Python3.5.2+PyCharm2017.1.3就报错,想知道是IDE、Python安装还是numpy的问题。

报错原因

这完全是numpy版本的问题,和你的IDE、Python3.5.2本身没关系。sign这个参数是numpy在1.14.0版本才新增的配置项,如果你本地安装的numpy版本低于1.14.0,调用set_printoptions时传入sign=' '就会触发这个“未知参数”的错误。而在线编辑器通常会使用较新的numpy版本,所以能正常识别这个参数。

解决方案

你有两个可选的解决思路:

  • 升级本地numpy版本
    打开终端(或PyCharm里的终端),执行以下命令升级numpy到支持sign参数的版本:
pip install --upgrade numpy

升级完成后,你的原有代码就能正常运行了。

  • 不升级numpy,用替代方式实现空格效果
    如果因为某些原因不能升级numpy,可以用numpy.array2string来手动控制输出格式,比如:
import numpy
N, M = input().split(' ')
eye_matrix = numpy.eye(int(N), int(M))
# 为1.0的元素添加前置空格,其他元素保持原样
print(numpy.array2string(eye_matrix, formatter={'float': lambda x: f' {x}' if x == 1.0 else f'{x}'}))

或者更通用的方式,确保所有元素前都带空格:

import numpy
N, M = input().split(' ')
eye_matrix = numpy.eye(int(N), int(M))
# 保持矩阵的嵌套格式输出
formatted_output = '[' + ' '.join(['[' + ' '.join([f' {num}' for num in row]) + ']' for row in eye_matrix]) + ']'
print(formatted_output)

内容的提问来源于stack exchange,提问作者Syed Saad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:03:58