numpy.array
将 Python 对象存储在withdtype='o'
与 using list
(或list
oflist
等,在更高维度)中的优缺点是什么?
在这种情况下,numpy 数组是否更有效?(似乎他们无法避免间接,但在多维情况下可能更有效。)
NumPy 数组的切片工作方式不同。NumPy 文档在该主题上花费了很长的一页。 强调一些要点:
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
)。
Numpy 比 Python 列表使用更少的内存。此外,Numpy 比列表更快、更方便。
例如:如果你想在 Python 中添加两个列表,你必须遍历列表中的所有元素。另一方面,在 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