加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python 2D列表性能,没有numpy

发布时间:2020-12-20 12:20:49 所属栏目:Python 来源:网络整理
导读:我试图在 Python中创建一个2D列表.我找到了两种可能性. def cArray(size): c = [[0. for i in range(size)] for j in range(size)] return cdef npArray(size): np = numpy.zeros((size,size)) return np 现在这两个函数都给出了正确的答案.这里的问题在于性
我试图在 Python中创建一个2D列表.我找到了两种可能性.

def cArray(size):
    c = [[0. for i in range(size)] for j in range(size)]
    return c

def npArray(size):
    np = numpy.zeros((size,size))
    return np

现在这两个函数都给出了正确的答案.这里的问题在于性能.我使用timeit运行了这两个,这是我的结果:

list size is 5000
number of times run is 5

cArray average time: 3.73241295815
npArray average time: 0.210782241821

很明显,我想避免使用第一个解决方案,特别是因为这将适用于高达100k的大小.但是,我也不想使用太多的依赖项.有没有办法让我有效地创建一个2D数组,没有numpy?它不需要完全达到速度,只要它不慢17倍.

解决方法

So obviously,I would like to avoid the first solution,especially since this will be running for sizes up to 100k. However,I also do not want to use too many dependencies.

您必须选择哪一项对您更重要. Numpy具有更好的性能,因为它不使用内置的Python类型并使用为数值工作优化的自己的类型.如果您的数据将是数字,并且您将拥有100k行/列,您将看到numpy的巨大性能提升.如果你想避免numpy依赖,你将不得不忍受降低性能. (显然,您可以随时编写自己的Python库或C扩展,以针对您的特定用例进行优化,但这些依赖性将与其他任何用例一样.)

我个人建议你只使用numpy.它被广泛使用,任何正在考虑使用处理100k多维数组的库的人可能已经安装了numpy.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读