2017-06-16 9 views
3

配列内の各文字列の長さを返すNumPyの組み込み操作はありますか?NumPy配列の各文字列の長さ

NumPy string operationsのいずれもそうは思いませんが、これは間違いありませんか?

私はforループでやっていますが、もっと効率的なものがありますか?私にとって

import numpy as np 
arr = np.array(['Hello', 'foo', 'and', 'whatsoever'], dtype='S256') 

sizes = [] 
for i in arr: 
    sizes.append(len(i)) 

print(sizes) 
[5, 3, 3, 10] 
+0

控えめなサイズの配列の場合、リストの理解度は良いです: '' [i in arr] ''。 'np.char'関数は、それぞれの要素に' string'メソッドを適用しなければならないので、高速でもありません。 – hpaulj

答えて

9

あなたはnumpyvectorizeを使用することができます。はるかに高速です。

+1

私のタイミングでは、 'mylen'はこの小さな例の配列のリストの理解よりもはるかに遅く、1000xのもののほうがはるかに速いです。 'vectorize'は速度を約束しません。多次元配列のすべての要素をより簡単に反復処理します。 – hpaulj

+0

@hpaulj私はforループを参照していました。通常より速く、データが巨大であれば、リストの理解よりもまだ高速です。データは重要です。 :) –

2

これは移動するための方法のようになります。

sizes = [len(i) for i in arr] 
関連する問題