numpyののndarray
クラスが__builtin__.objects
が反復可能なタイプではありません、私が集めることができるものからnumpy.ndarrayの反復可能な振る舞いはどこから来ますか?
class ndarray(__builtin__.objects)
として定義されていますか?
Arr = numpy.array('As Far As I Know'.split())
=> array(['As', 'Far', 'As', 'I', 'Know'], dtype='|S4')
print map(lambda x: x[0],Arr)
=> ['A', 'F', 'A', 'I', 'K']
それともこれはndarray
の__init__
メソッドに渡される(list
)オブジェクトの属性から来るん:このような理由から、私は驚くべきことでは、この動作を見つけますか?しかし、配列オブジェクトにlist.reverse
のようなメソッドを使用できないのはなぜですか?内部的にリストとして格納されているのですか?
(および側は誰もがndarray
オブジェクトの各要素に文字列操作を適用するために任意のより良い方法を知っているんではないと?)
Guidoは '' python regrets ''として 'map'と' lambda'をリストしていますので、 '' np.array([k [x]にはk [0])のようなリスト内包を好む傾向があります ' – wim
はい、私はこの議論に厳密に従いました(彼は私の知る限り、 'reduce'と' lambda'を必要としませんが、 'map'は嫌いですが)' x'は上記の例で 'map'と' lambda'を使用するローカル変数です。あなたが示したように、リストの理解の使用において、 'k 'はグローバルである。私はその理由のためにリスト内包を受け入れることができません。 – hatmatrix
@crippledlambda:Python 3では、リスト内包表記のループ変数は、もはや囲みスコープにリークされません。これをPython 2で流出させたくない場合は、 '[... for x in a]'を 'list(... in x in a)'に変換することができます。 –