为了账号安全,请及时绑定邮箱和手机立即绑定

有效地为数组赋值

有效地为数组赋值

慕桂英4014372 2022-06-02 15:20:06
我如何才能有效地执行此代码?import numpy as nparray = np.zeros((10000,10000)) lower = 5000  higher = 10000 for x in range(lower, higher):     for y in range(lower, higher):        array[x][y] = 1     print(array)我认为使用 numpy 库(没有循环)必须是一种有效的方法。
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

尝试这个 :


array[lower:higher, lower:higher] = 1

# OR

array[lower:higher, lower:higher].fill(1) # Faster

当您居住在巨大的阵列中时,第二个过程将比第一个更快。这是使用小规模数据进行的采样时间检查:


>>> from timeit import timeit as t

>>> t("""import numpy as np; a=np.zeros((100,100)); a[50:100,50:100].fill(1)""")

3.619488961998286

>>> t("""import numpy as np; a=np.zeros((100,100)); a[50:100,50:100] = 1""")

3.688145470998279


查看完整回答
反对 回复 2022-06-02
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您可以使用以下代码:

array[5000:10000,5000:10000].fill(1)

相对于您的代码,这种方式非常有效。


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信