のnumpyの配列の違い(より高い次元で、等、又はlist
のlist
)list
を用いて対dtype='o'
とnumpy.array
にPythonオブジェクトを格納する利点と欠点は何ですか?パイソン:リスト及びオブジェクト
この場合、numpy配列の方が効率的ですか? (間接指定を避けることはできないと思われますが、多次元の場合はより効率的です)。
のnumpyの配列の違い(より高い次元で、等、又はlist
のlist
)list
を用いて対dtype='o'
とnumpy.array
にPythonオブジェクトを格納する利点と欠点は何ですか?パイソン:リスト及びオブジェクト
この場合、numpy配列の方が効率的ですか? (間接指定を避けることはできないと思われますが、多次元の場合はより効率的です)。
スライスは、NumPy配列とは動作が異なります。いくつかのポイントを強調するためにThe NumPy docs devote a lengthy page on the topic.:リストのスライスが浅いコピーであるながら
list
の項目を挿入および削除するには、スライスに異なる長さのシーケンスを割り当てますが、NumPyではエラーが発生します。デモ:
>>> a = np.arange(4, dtype=object).reshape((2,2))
>>> a
array([[0, 1],
[2, 3]], dtype=object)
>>> a[:,0] #multidimensional slicing
array([0, 2], dtype=object)
>>> b = a[:,0]
>>> b[:] = True #can assign scalar
>>> a #contents of a changed because b is a view to a
array([[True, 1],
[True, 3]], dtype=object)
また、numpyのアレイ(例えばfraction.Fraction
)、それらをサポートするオブジェクトの配列で便利な数学的操作を提供します。
申し訳ありませんが、私の前のコメントは間違っていました。 – tiago
また、 'flat'、' flatten'、 'nditer'のようなnumpyヘルパーを使うことができます。 –
Numpyは、Pythonリストよりメモリ使用量が少ないです。また、Numpyはリストよりも高速で便利です。
たとえば、Pythonで2つのリストを追加する場合は、リスト内のすべての要素をループする必要があります。一方、Numpyでは、それらを追加するだけです。
# adding two lists in python
sum = []
l1 = [1, 2, 3]
l2 = [2, 3, 4]
for i in range(len(l1)):
print sum.append(l1[i]+l2[i])
# adding in numpy
a1 = np.arange(3)
a2 = np.arange(3)
sum2 = a1+a2
print sum2
数字の配列について質問していませんでした。私はオブジェクトの配列について尋ねていた。そして、私は、Pythonのリストがより多くのメモリを必要としたり、より遅いことを知らない。結局のところ、それらは両方ともすぐ下の連続した配列です。 –
私は個人的にNumPyの*オブジェクト*アレイの魅力的な用途に遭遇したことはありません。誰かが説得力のある例を思いつくことができるかどうかを知ることは興味深いでしょう。 (+1) – NPE
可能な複製http://stackoverflow.com/questions/6141853/numpy-array-of-python-objects – tiago
@NPE私は、(いくつかの)数学的演算を行う便利な方法以外ではほとんど同意します。 'Fraction'オブジェクト(またはそれに類するもの)の配列は、6つのネストされた' zip'および 'map'に頼らずに使用できます。 – Jaime