字符串字符的numpy数组

2024-06-06 14:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个2D numpy char数组(来自NetCDF4文件),它实际上表示一个字符串列表。我想把它转换成一个字符串列表。

我知道我可以使用join()将字符连接成字符串,但我一次只能找到一个字符串:

data = np.array([['a','b'],['c','d']])
for row in data[:]:
    print ''.join(row)

但是很慢。如何在单个命令中返回字符串数组?谢谢


Tags: 文件字符串innumpy列表fordatanp
3条回答
[row.tostring() for row in data]

尝试列表理解:

>> s = [''.join(row) for row in data]
>> s
['ab', 'cd']

这只是重写的for循环。

列表理解是最“Python”的方式。

最“刺激”的方式是:

>>> data = np.array([['a','b'],['c','d']])
# a 2D view
>>> data.view('S2')
array([['ab'],
       ['cd']], 
      dtype='|S2')
# or maybe a 1D view ...fastest solution:
>>> data.view('S2').ravel()
array(['ab', 'cd'], 
      dtype='|S2')

没有循环,没有列表理解,甚至没有副本。缓冲区只是保持不变,有一个不同的“视图”,所以这是最快的解决方案。

相关问题 更多 >