numpy字符串的字符串

Adr*_*anR 9 python arrays string numpy char

我有一个2D numpy char数组(来自NetCDF4文件),它实际上代表了一个字符串列表.我想将其转换为字符串列表.

我知道我可以使用join()将chars连接成一个字符串,但我只能找到一种方法来一次执行一个字符串:

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

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

Phi*_*per 12

列表理解是最"pythonic"的方式.

最"numpythonic"的方式是:

>>> 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')
Run Code Online (Sandbox Code Playgroud)

没有循环,没有列表理解,甚至没有副本.缓冲区只是保持不变,具有不同的"视图",因此这是最快的解决方案.

  • 一个重要的警告是数组必须在内存中*连续* - 否则视图失败。您可以通过使用 `data = np.ascontiguousarray(data)` 来确保这一点。 (2认同)

Chr*_*ris 4

尝试列表理解:

>> s = [''.join(row) for row in data]
>> s
['ab', 'cd']
Run Code Online (Sandbox Code Playgroud)

这只是你for重写的循环。