最近的一个程序案例中,需要对二维数据的行列做与运算,于是做了一个运算速度的小test
变量声明&赋值:
import numpy as np
# 构建随机数组
L = 2000
a = np.random.randint(0, 2, size=[L, L])
# np.array二维数组,单元类型分别为int、bool
arrayInt = np.int_(a)
arrayBool = np.bool_(a)
# np.matrix二维数组,单元类型分别为int、bool
matInt = np.matrix(arrayInt)
matBool = np.matrix(arrayBool)
与运算函数
func1:矩阵的行与行做与运算
func2:矩阵的行与列做与运算
def func1(array):
for i in range(0,L):
for j in range(0,L):
br = array[i] & array[j]
def func2(array):
for i in range(0,L):
for j in range(0,L):
br = array[i][:] & array[:][j]
运行测试
测试项目如下:
1. np.array(int)矩阵行行与运算速度
2. np.array(bool)矩阵行行与运算速度
3. np.matrix(int)矩阵行行与运算速度
4. np.matrix(bool)矩阵行行与运算速度
5. np.array(int)矩阵行列与运算速度
6. np.array(bool)矩阵行列与运算速度
7. np.matrix(int)矩阵行列与运算速度
8. np.matrix(bool)矩阵行列与运算速度
import time
print("array: 行 与运算")
start = time.time()
func1(arrayInt)
end = time.time()
print("int:",end-start)
start = time.time()
func1(arrayBool)
end = time.time()
print("int:",end-start, end="\n\n")
print("matrix: 行 与运算")
start = time.time()
func1(matInt)
end = time.time()
print("bool:",end-start)
start = time.time()
func1(matBool)
end = time.time()
print("bool:",end-start, end="\n\n")
print("array: 行列 与运算")
start = time.time()
func2(arrayInt)
end = time.time()
print("int:",end-start)
start = time.time()
func2(arrayBool)
end = time.time()
print("bool:",end-start, end="\n\n")
print("matrix: 行列 与运算")
start = time.time()
func2(matInt)
end = time.time()
print("int:",end-start)
start = time.time()
func2(matBool)
end = time.time()
print("bool:",end-start)
测试结果如下:
由此可见:
* 大多数情况下,bool类型与运算速度快于int
* matrix类型做与运算速度要低于array类型
* 行行 与和 行列与速度相似