我一直在尝试将一些多行字符串保存在numpy数组中,如下所示:
但是,当我稍后检查数组的内容时,它是空的
我怀疑%可能在这里耍我,但我不知道如何处理它。
strings = np.empty(1, dtype=str) strings[0] = """ $_1 =
%_1.a = 25129 ± 92.3741
$_2 = %_2.height = 11340.5 ± 1951.81
$_3 = %_2.center = 63.4979 ± 0.275278
$_4 = %_2.hwhm = 1.6318 ± 0.324661
$_5 = %_3.height = 19482.3 ± 2420.92
$_6 = %_3.center = 106.329 ± 0.12973
$_7 = %_3.hwhm = 1.07347 ± 0.155327
$_8 = %_4.height = 9985.67 ± 2382.35
$_9 = %_4.center = 223.417 ± 0.257358
$_10 = %_4.hwhm = -1.11065 ± 0.30902
$_11 = %_5.height = 61622 ± 2154.58
$_12 = %_5.center = 443.983 ± 0.0458769
$_13 = %_5.hwhm = 1.338 ± 0.0540433
$_14 = %_6.height = 36949.9 ± 2230.42
$_15 = %_6.center = 541.081 ± 0.0738621
$_16 = %_6.hwhm = 1.24646 ± 0.086812
$_17 = %_7.height = 28368.8 ± 2217.38
$_18 = %_7.center = 693.312 ± 0.0968789
$_19 = %_7.hwhm = 1.26497 ± 0.114331"""
print(strings[0])
在我的例子中,这给出了一个空字符串,而我期望它打印字符串。
1条答案
按热度按时间pwuypxnk1#
如果我查看结果,我会看到
dtype
是'U1'。这是一个unicode字符。print(strings)
不会显示这个。它应该是print(repr(strings))
,这是ipython
所显示的:任何赋给这个数组的字符串都将被剪切(有些人认为它至少应该给予一个警告):
我们可以从接受更长字符串的dtype开始:
np.array(['foobar']
)'将选择一个dtype来匹配输入,但这样就不能用更长的字符串来替换它。numpy
并不是字符串的最佳选择。Python字符串可以是任意长度。由于它存储数据的方式,numpy
使用固定(或最大)的'Un' dtype。否则,它不会添加太多自己的代码来处理字符串。因此,除非你真的需要多维布局的好处,否则你最好只使用python字符串和列表。您的多行字符串只是一个带有“\n”的字符串。