使用Numpy更快地分配字符串

时间:2014-07-27 09:25:21

标签: python string numpy

Numpy可以用来做更快的字符串分配吗?

我希望我的字符串数组像

[['x1-y1', 'x1-y2'...],
['x2-y2, 'x2-y2' ...],
.....
]

等等

所以,每个(i,j)=" x%d-y%d" %(i,j)

这可以在Numpy中完成吗?

1 个答案:

答案 0 :(得分:0)

如果数组的大小是(m,m)

rx = np.outer(np.ones((m,)), np.linspace(1, m, m))
ry = np.outer(np.linspace(1, m, m), np.ones((m,)))
s1 = np.chararray((m, m),itemsize=1)
s1[:]=''
strarray = s1+'x'+np.array(rx, dtype='str')+'-'+'y'+np.array(ry, dtype='str')

输出

chararray([['x1.0-y1.0', 'x2.0-y1.0', 'x3.0-y1.0', 'x4.0-y1.0', 'x5.0-y1.0'],
       ['x1.0-y2.0', 'x2.0-y2.0', 'x3.0-y2.0', 'x4.0-y2.0', 'x5.0-y2.0'],
       ['x1.0-y3.0', 'x2.0-y3.0', 'x3.0-y3.0', 'x4.0-y3.0', 'x5.0-y3.0'],
       ['x1.0-y4.0', 'x2.0-y4.0', 'x3.0-y4.0', 'x4.0-y4.0', 'x5.0-y4.0'],
       ['x1.0-y5.0', 'x2.0-y5.0', 'x3.0-y5.0', 'x4.0-y5.0', 'x5.0-y5.0']], 
      dtype='|S68')