没有合适的资源?快使用搜索试试~ 我知道了~
首页python for循环,列表推导、numpy三者的运算速度对比
在Python中,我们要尽量的对数据计算选择使用numpy格式, 不要过得使用for,for循环计算效率很低,一般情况下,列表推导的计算速度介于两者之间。 这里我将三者做一个对比,所做的案例就是将矩阵上的每个元素, 在原来数值的基础上都加上1。这是一个简单的操作,对比一下,每种方法所花的计算的时间。 这里就是使用sklearn的美国加州房价的数据集的特征X作为我们的矩阵数据集。 import pandas as pd from sklearn.datasets import fetch_california_housing HOUSE = fetch_california_housi
资源详情
资源评论
资源推荐

python for循环,列表推导、循环,列表推导、numpy三者的运算速度对比三者的运算速度对比
在Python中,我们要尽量的对数据计算选择使用numpy格式,
不要过得使用for,for循环计算效率很低,一般情况下,列表推导的计算速度介于两者之间。
这里我将三者做一个对比,所做的案例就是将矩阵上的每个元素,
在原来数值的基础上都加上1。这是一个简单的操作,对比一下,每种方法所花的计算的时间。
这里就是使用sklearn的美国加州房价的数据集的特征X作为我们的矩阵数据集。
import pandas as pd
from sklearn.datasets import fetch_california_housing
HOUSE = fetch_california_housing()
X = HOUSE.data
这里的特征矩阵X是一个 20640行8列的数据集,类型为ndnarray
使用for循环
%%time
RES = [] for i in range(X.shape[0]):
res = [] for j in range(X.shape[1]):
res.append(X[i,j]+1)
RES.append(res)
pd.DataFrame(RES).head(3)
2.使用列表推导式
注意注意: 这里我将使用两层嵌套的列表推导
格式为:【 [expression for i in a ] for j in b 】expression包含 i,j的 表达式,类似于包含自变量为i,j的函数。
%%time
res1 = pd.DataFrame([[(X[j,i]+1) for i in range(X.shape[1])] for j in range(X.shape[0])])
res1.head(3)
不过令我奇怪的是这里所花的时间竟然比for循环还长
直接使用numpy矩阵
%%time
res2 = pd.DataFrame(X + 1)
res2.head(3)


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0