如何从充满字符串的numpy数组(形状(n,m))中获取所有值的第一个字符
How to get the first character of all values out of numpy array (shaped (n, m)) filled with strings
所以我有一个形状像 (n, m)
的大数组,里面装满了字符串。一个小例子是:
string_array = np.array([
['hello', 'world'],
['greetings', 'all'],
['merry', 'christmas']
])
我想要每个字符串的所有第一个字符,但出于某种原因我遇到了困难。我的第一个猜测是使用:
>>> string_array[:, :][0]
这没有用,因为我只是从矩阵中取出第一行。我想要你使用
时得到的结果
>>> string_array[0, 0][0]
>>> 'h'
但是现在对于数组中的每个元素?我当然喜欢没有循环的解决方案。为清楚起见,我想要以下内容:
array([
['h', 'w'],
['g', 'a'],
['m', 'c']
])
你可以使用 np.vectorize
>>> np.vectorize(lambda s: s[0])(string_array)
array([['h', 'w'],
['g', 'a'],
['m', 'c']], dtype='<U1')
尽管请注意 np.vectorize
实际上并没有“矢量化”它在循环中对数组应用一个函数。
编辑:看起来这个问题 并且对其他方法有很好的性能分析。
所以我有一个形状像 (n, m)
的大数组,里面装满了字符串。一个小例子是:
string_array = np.array([
['hello', 'world'],
['greetings', 'all'],
['merry', 'christmas']
])
我想要每个字符串的所有第一个字符,但出于某种原因我遇到了困难。我的第一个猜测是使用:
>>> string_array[:, :][0]
这没有用,因为我只是从矩阵中取出第一行。我想要你使用
时得到的结果>>> string_array[0, 0][0]
>>> 'h'
但是现在对于数组中的每个元素?我当然喜欢没有循环的解决方案。为清楚起见,我想要以下内容:
array([
['h', 'w'],
['g', 'a'],
['m', 'c']
])
你可以使用 np.vectorize
>>> np.vectorize(lambda s: s[0])(string_array)
array([['h', 'w'],
['g', 'a'],
['m', 'c']], dtype='<U1')
尽管请注意 np.vectorize
实际上并没有“矢量化”它在循环中对数组应用一个函数。
编辑:看起来这个问题