python中去除循环-向量化-提高效率

提问

我们有这样一个要求

我们要把下面代码的循环给去除,但是不能影响我的结果

import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
z = 0
for i in range(len(a)):
    z += a[i] * b[i]

print(z)

解决

我们可以通过我们的向量化来解决

将循环操作通过向量化替代

import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
z = 0
z = np.dot(a, b)

print(z)

我们可以看到结果是一样的,但是把循环给去除了

提高效率的实际例子

不使用向量化的

import numpy as np

def square_elements(input_array):
    result = np.zeros_like(input_array)
    for i in range(len(input_array)):
        result[i] = input_array[i] ** 2
    return result

# 示例
input_array = np.array([1, 2, 3, 4, 5])
output = square_elements(input_array)
print(output)

使用向量化后

import numpy as np

def square_elements_vectorized(input_array):
    return input_array ** 2

# 示例
input_array = np.array([1, 2, 3, 4, 5])
output = square_elements_vectorized(input_array)
print(output)

结果都是一样的 

很明显使用向量化后的更加简洁,而且运行的速度更快

你可能感兴趣的:(python,numpy,开发语言)