python矩阵计算速度很慢_Python中矩阵计算的优化

您可以为此使用numba(可以添加nopython=True或使用静态类型以获得更多加速):from numba import jit

import numpy as np

n = 200

size = (n,n)

x = np.zeros(size)

m = 0 # mean

if n%2 == 0:

m = int((n+1)/2)

else :

m = int(n/2)

x[m][m] = 100000

z = int(x[m][m])

def f(x):

count = 0

for i in range(0,n):

for j in range(0,n):

if x[i][j] > 3:

x[i][j] = x[i][j] - 4

if i-1 >= 0 :

x[i-1][j] = x[i-1][j] + 1

if i+1 < n :

x[i+1][j] = x[i+1][j] + 1

if j-1 >= 0 :

x[i][j-1] = x[i][j-1] + 1

if j+1 < n :

x[i][j+1] = x[i][j+1] + 1

elif x[i][j] <= 3:

count = count + 1

return x, count

@jit

def f_jit(x):

count = 0

for i in range(0,n):

for j in range(0,n):

if x[i][j] > 3:

x[i][j] = x[i][j] - 4

if i-1 >= 0 :

x[i-1][j] = x[i-1][j] + 1

if i+1 < n :

x[i+1][j] = x[i+1][j] + 1

if j-1 >= 0 :

x[i][j-1] = x[i][j-1] + 1

if j+1 < n :

x[i][j+1] = x[i][j+1] + 1

elif x[i][j] <= 3:

count = count + 1

return x, count

%%timeit

f(x)

28.7 ms ± 602 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

%%timeit

f_jit(x)

59.9 µs ± 7.22 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值