在使用numpy.array
的{{1}}与使用dtype='o'
(或list
list
等的情况下存储Python对象有哪些优缺点,在更高的维度)?
在这种情况下,numpy数组是否更有效? (似乎他们无法避免间接,但在多维案例中可能更有效。)
答案 0 :(得分:7)
切片与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
)提供方便的数学运算。
答案 1 :(得分:0)
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