从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.save
和np.load
来检索它。 savetxt
的如果是 2d 并且你想要一个文本 csv
样式文件。
【参考方案1】:
您的 numpy 数组似乎具有 dtype float
因此它实际上不包含任何新行。我假设您在执行print(name_avg_vector)
之类的操作时看到的是换行符。解决问题的一种方法是编写自己的循环以您想要的格式打印值。
【讨论】:
以上是关于从numpy数组中删除换行符[重复]的主要内容,如果未能解决你的问题,请参考以下文章