【发布时间】:2014-01-06 02:20:11
【问题描述】:
数值数据的 Numpy 数组显然工作得很好,但将它们用于非数值数据会慢吗?
例如,假设我有一些嵌套的文本数据列表:
mammals = ['dog', 'cat', 'rat']
birds = ['stork', 'robin', 'penguin']
animals1 = [mammals, birds]
当访问和操作这些数据时,这个嵌套列表列表会比等效的 numpy 数组更快吗?
import numpy as np
animals2 = np.array(animals1)
由于 numpy 数组是作为“跨步”数组实现的,其中每个元素都有固定的长度,如果转换为 numpy 数组,带有几个长字符串的“稀疏”字符串列表将占用不成比例的内存量。但是速度呢?
【问题讨论】:
-
您可以随时使用
timeit包来对这类事情进行基准测试。 -
numpy 的主要优势在于数值计算的性能。您不太可能看到其他数据类型的显着优势,并且在某些情况下性能可能会差很多。