假设我们有一个包含numpy.str_元素的numpy.ndarray。例如,arr 下面是 numpy.ndarray numpy.str_四个元素,如下所示:
>>> print(arr)
['tSTARTt 0n' '12345 ABCDEFG' '1A 2B3C' 'nE N D']
有没有办法将arr
的内容写入一个文件,而没有[
,]
也没有每个numpy.str_
元素的'
?
也就是说,像这样写arr
:
tSTARTt 0n12345 ABCDEFG1A 2B3nE N D
另外,我可以每行打印一个元素numpy
数组的元素吗?理想情况下,这里也没有[
,]
也没有'
。
也就是说,要像这样打印arr
:
tSTARTt 0n
12345 ABCDEFG
1A 2B3
nE N D
编辑
(1)如果试试这个
with open(resultfile, 'w') as f:
f.write(str(arr))
我得到
['tSTARTt 0n' '12345 ABCDEFG' '1A 2B3C' 'nE N D']
(2)如果我尝试这个(如GreenHawk1220的答案所建议的那样)
A = str('n'.join(arr))
B = ''.split(A)
del B[0]
# del B[-1] #Deletes end characters # *THIS GIVES INDEXERROR*
C = ''.join(B)
print(C)
with open(resultfile, 'w') as f:
f.write(C)
我什么也没得到(也没有写入文件)。
创建数组:
In [2]: arr = np.array(['tSTARTt 0n', '12345 ABCDEFG', '1A 2B3C', 'nE N D'])
In [3]:
In [3]: arr
Out[3]:
array(['tSTARTt 0n', '12345 ABCDEFG', '1A 2B3C', 'nE N D'],
dtype='<U13')
联接成一个字符串;相当于''.join(arr.tolist())
(实际''.join(list(arr))
)
In [4]: ''.join(arr)
Out[4]: 'tSTARTt 0n12345 ABCDEFG1A 2B3CnE N D'
print/str
表示形式在n
和t
上展开。
In [5]: print(''.join(arr))
START 0
12345 ABCDEFG1A 2B3C
E N D
repr
引用他们的话:
In [6]: print(repr(''.join(arr)))
'tSTARTt 0n12345 ABCDEFG1A 2B3CnE N D'
f.write
有同样的问题:
In [8]: with open('test.txt','w') as f:
...: f.write(''.join(arr))
...: f.write('n')
...:
In [9]: cat test.txt
START 0
12345 ABCDEFG1A 2B3C
E N D
In [10]: with open('test.txt','w') as f:
...: f.write(repr(''.join(arr)))
...: f.write('n')
...:
In [11]: cat test.txt
'tSTARTt 0n12345 ABCDEFG1A 2B3CnE N D'
这不是真正的字符串数组问题。 这是一个关于如何打印/写入包含n
和t
的字符串的问题。
评论后:
In [18]: with open('test.txt','wb') as f:
...: f.write(''.join(arr).encode('unicode_escape'))
...: f.write(b'n')
In [19]: cat test.txt
tSTARTt 0n12345 ABCDEFG1A 2B3CnE N D
对于单个字符串:
In [21]: with open('test.txt','wb') as f:
...: for s in arr:
...: f.write(s.encode('unicode_escape'))
...: f.write(b'n')
...:
In [22]: cat test.txt
tSTARTt 0n
12345 ABCDEFG
1A 2B3C
nE N D
以防万一它不明显,我正在使用 Ipython 和 Py3。 Py2 可能有所不同。
该encode
创建一个带有额外\t
等的字节串。.decode
可用于将其变回Unicode以进行整齐的打印:
In [6]: for s in arr: print(s.encode('unicode_escape').decode())
tSTARTt 0n
12345 ABCDEFG
1A 2B3C
nE N D