从numpy数组中删除换行符[重复]

Posted

技术标签:

【中文标题】从numpy数组中删除换行符[重复]【英文标题】:Removing line breaks from numpy array [duplicate] 【发布时间】:2020-02-08 09:28:29 【问题描述】:

我有一个函数可以计算由多个单词组成的每个名称的平均向量,该函数返回 numpy.ndarray,形状为 (100,)。得到的向量如下:

[ 0.00127441  0.0002633   0.00039622  0.00055501  0.00070984 -0.00089766
 -0.00073814 -0.00224919  0.00233035 -0.00037628  0.00125402 -0.00052623
  0.00114087 -0.00070441 -0.00419099  0.00031204 -0.0002703  -0.00290918
  ...(13 lines)
0.00260704 -0.00000406 -0.00160876  0.00134342]

在收到 numpy 数组后,我将删除换行符,如下所示:

temp = ["%.8f" % number for number in name_avg_vector]
temp=re.sub('\s+', ' ', temp)
name_avg_vector= np.array(list(temp))

但我收到以下错误:

---> 79     temp=re.sub('\s+', ' ', name_avg_vector)
TypeError: cannot use a string pattern on a bytes-like object

我也尝试更改打印选项,但我继续在存储 numpy 数组值的文件中使用换行符:

import sys
np.set_printoptions(threshold=sys.maxsize)
np.set_printoptions(threshold=np.inf)

之后,我尝试使用 array_repr 删除断线:

name_avg_vector = np.array_repr(name_avg_vector).replace('\n', '')

但它保存为:

['array([-0.00849786,  0.00113221, -0.00643946,  0.00437448, -0.00740928,        0.00381133,  0.00178376, -0.00065115, -0.00050142,       -0.0001178 ,  0.00029183,  0.00015484, -0.00001569,  0.0006973 ,        0.00051486,  0.00006652, -0.00099618, -0.00049231,  0.0003479 ,        0.00135821,  0.00078396,  0.00038927,  0.00040825, -0.00093267,        0.00025755, -0.00012063, -0.00074733,  0.00120466,  0.00041425,       -0.00062592,  0.00098112,  0.00101578, -0.00048335,  0.00079251,       -0.00112981, 
...
-0.00050014,  0.00133685, -0.00020537, -0.00082505])']  

正如 Anoyz 在here 中所说,转换为列表可以消除诸如name_avg_vector.tolist() 之类的断行。

谢谢

【问题讨论】:

您要删除哪些换行符?你在哪里看到这些?您的 numpy 数组实际上不包含任何换行符。 Numpy 仅在显示数组时生成换行符。 例如,第一个发布的数组内容包括:0.00127441 0.0002633 0.00039622 0.00055501 0.00070984 -0.00089766 其中在-0.00089766 之后有一个\n 用于拆分行,每6 个浮点数,数组被拆分到下一行。我读的是默认linewidth=75,这个数组的形状是(100,) "在 -0.00089766 之后有一个 \n 来分割行" 因此,当您 显示 具有类似 print(name_avg_vector) 的数组时会有换行符。这不是存储在数组中的数据。 我认为它是数据本身,因为它与文件中的断线一起存储。后来当我申请np.array_repr()时,断线消失了,但添加了图例'array(.. 你是如何“接收”和处理这个“数组”的?听起来您正在尝试使用数组的字符串表示形式,而不是数组本身。很难从它的打印字符串重新创建一个数组 - 带有那些换行符、空格和省略号。您应该尝试使用数组对象本身。如果您需要将其保存到文件中,请使用np.savenp.load 来检索它。 savetxt 的如果是 2d 并且你想要一个文本 csv 样式文件。 【参考方案1】:

您的 numpy 数组似乎具有 dtype float 因此它实际上不包含任何新行。我假设您在执行print(name_avg_vector) 之类的操作时看到的是换行符。解决问题的一种方法是编写自己的循环以您想要的格式打印值。

【讨论】:

以上是关于从numpy数组中删除换行符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 JAVA 字符串中的“所有换行符”[重复]

如何从数组的numpy数组中删除外部数组[重复]

当重复少于 n 次时,从 numpy 数组中删除行

如何从字符串的开头和结尾删除换行符?

删除引用字符串中的换行符[重复]

如何从句子中删除多余的空格、制表符和换行符,并仅用一个空格替换它们? [复制]