1

MATLAB の「cellfun」に似た python または numpy のアプローチはありますか? 長さの異なる ~300k セルを含む MATLAB セル配列であるオブジェクトに関数を適用したいと考えています。

非常に簡単な例:

>>> xx = [(4,2), (1,2,3)]
>>> yy = np.exp(xx)

Traceback (most recent call last):
File "<pyshell#47>", line 1, in <module>
yy = np.exp(xx)
AttributeError: 'tuple' object has no attribute 'exp'
4

2 に答える 2

5

最も読みやすく保守しやすいアプローチは、おそらくリスト内包表記を使用することです。

yy = [ np.exp(xxi) for xxi in xx ]

numpy.expこれは、各タプルを に暗黙的に変換することに依存しています。これは、タプルのリストではなく、 のリストが返さnumpy.ndarrayれることを意味します。numpy.ndarrayそれはおそらくほとんどすべての目的で問題ありませんが、タプルが絶対に必要な場合は、アレンジも簡単です。

yy = [ tuple(np.exp(xxi)) for xxi in xx ]

目的によっては (メモリのボトルネックを回避するなど) 、リスト内包表記よりもジェネレーター式を使用する方がよい場合があります (角括弧ではなく丸括弧)。

于 2016-10-12T19:57:05.447 に答える