我的数组中的 \n 是从哪里来的?(Python)

3

我正在尝试为以下numpy数组创建文本字符串:

A = array([0, 0, 0, 0, 0.64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0])

我可以用这一行代码轻松完成:

text = f'{A}'

我遇到的问题是,每当我使用f'{}'将数组转换为字符串时,输出的结果与原数组相同,但某些字符后面会有一个\n。
text
'[0.   0.   0.   0.64 0.   0.   0.   0.   0.   0.   0.   0.   0.   0.\n 1.   0.   0.   0.  ]'

我试图在绘图的标题中使用这个数组,所以我不希望数组换行成新的一行,因为这会使它难以阅读/查看。
我已经尝试在text上使用rstrip('\n'),但它并没有去掉'\n'。有人知道发生了什么吗?为什么这个\n出现在字符串数组中?

这个可以工作的代码是 text = ' '.join(i.strip() for i in str(A)) - Mohnish
2个回答

2

您不需要声明array()来完成您尝试做的事情:

A = [0, 0, 0, 0, 0.64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]

print(A)
[0, 0, 0, 0, 0.64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]

print(f'{A}')
[0, 0, 0, 0, 0.64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0] 

A
[0, 0, 0, 0, 0.64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]

看起来你正在创建一个NumPy N维数组,然后将其转换为字符串,因此在调用print()时打印了该数组的字符串表示形式。除非你特别需要NumPy数组,否则你可以像上面那样做,或者如果你需要:

    from numpy import array
    A = [0, 0, 0, 0, 0.64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
    B = array(A)

    print(B)
    [0.   0.   0.   0.   0.64 0.   0.   0.   0.   0.   0.   0.   0.   0.
     0.   1.   0.   0.   0.  ]

    print(f'{B}')
    [0.   0.   0.   0.   0.64 0.   0.   0.   0.   0.   0.   0.   0.   0.
     0.   1.   0.   0.   0.  ]

     B
     array([0.  , 0.  , 0.  , 0.  , 0.64, 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.  , 0.  , 0.  , 1.  , 0.  , 0.  , 0.  ])

如果您必须将NumPy数组呈现为字符串,则可以像这样操作:
  text = f'{A}'
  text = text.replace("\n","")

正如Ramón Márquez所提到的那样,您可以简单地增加printoptions的行宽:

numpy.set_printoptions(linewidth=96)

NumPy数组的文档:https://machinelearningmastery.com/gentle-introduction-n-dimensional-arrays-python-numpy/

NumPy打印选项的文档:https://numpy.org/doc/1.18/reference/generated/numpy.printoptions.html


非常感谢您的详尽帖子,现在更加清晰易懂了。 - Malek

1
这与numpy的数组输出方式有关。
如果将linewidth设置为96——即str(A)的长度,不包括任何\n,再加上1——它就不会插入换行符:
numpy.set_printoptions(linewidth=96)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接