小编典典

如何在numpy中创建字符数组?

python

说我有以下数组:

import numpy as np
a = ['hello','snake','plate']

我希望这变成一个numpy数组,b以便:

b[0,0] = 'h'
b[0,1] = 'e'
b[0,2] = 'l'
b[1,0] = 's'
...

我希望标准的numpy技巧能够正常工作,例如广播,比较等。

怎么做?那在numpy文档中呢?

谢谢!

乌里


阅读 220

收藏
2021-01-20

共1个答案

小编典典

您可以直接创建一个numpy字符数组,例如:

b = np.array([ ['h','e','l','l','o'],['s','n','a','k','e'],['p','l','a','t','e'] ])

通常的数组技巧可以解决这个问题。

如果您有a并且希望从中 生成 b,请注意:

list('hello') == ['h','e','l','l','o']

因此,您可以执行以下操作:

b = np.array([ list(word) for word in a ])

但是,如果a单词长度不等(例如['snakes','on','a','plane']),您想对较短的单词做什么?您可以用最长的单词用空格填充:

wid = max(len(w) for w in a)
b = np.array([ list(w.center(wid)) for w in a])

其中string.center(width)垫有空格,居中放置字符串。您还可以使用rjustljust(请参阅字符串docs)。

2021-01-20