文章目录
Python原生语法与Numpy对比
求数组元素的和:
(1)使用Python原生list:
def python_sum(n):
""" Python实现数组的加法
@param n:数组的长度
"""
a = [i**2 for i in range(n)]
b = [i**3 for i in range(n)]
c = []
for i in range(n):
c.append(a[i] + b[i])
return c
(2)使用Numpy:
def numpy_sum(n):
""" numpy实现数组的加法
@param n:数组的长度
"""
a = np.arange(n) ** 2
b = np.arange(n) ** 3
return a+b
从上面的代码中可以看到,要求数组中各元素的和,如果用原生List,必须使用循环。而Numpy数组可以直接用运算符。
此外,Numpy的执行速度也比原生Python List快很多。
Numpy的核心array对象以及创建array的方法
创建array的方法:
(1)从Python的列表List和嵌套列表创建array:
import numpy as np
# 创建一个一维数组,也就是Python的单元素List
x = np.array([1,2,3,4,5,6,7,8])
# 创建一个二维数组,也就是Python的嵌套List
X = np.array(
[
[1,2,3,4],
[5,6,7,8]
]
)
(2)使用预定函数的arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建:
#【1】arange函数:arange([start,] stop[, step,], dtype=None)
np.arange(10) #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(2, 10, 2) #array([2, 4, 6, 8])
# 【2】ones函数:np.ones(shape, dtype=None, order='C')
#shape : int or tuple of ints Shape of the new array, e.g., (2, 3) or 2
np.ones(10)#array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
np.ones((2,3))
#array([[1., 1., 1.],
# [1., 1., 1.]])
# 【3】ones_like函数:ones_like(a, dtype=float, order='C')
np.ones_like(x)
np.ones_like(X)
# 【4】empty函数:empty(shape, dtype=float, order='C')
#注意:数据是未初始化的,里面的值可能是随机值不要用
np.empty(10)#array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.empty((2,4))
# 【5】full函数:np.full(shape, fill_value, dtype=None, order='C')
# 创建指定值的数组
np.full(10, 666)
np.full((2,4), 333)
(3)生成随机数的np.random模块构建:
#【1】设定随机种子,每次生成的随机数相同
np.random.seed(666)
#【2】rand(d0, d1, ..., dn)
#返回数据在[0,1)之间,具有均匀分布
np.random.rand(5)#array([0.70043712, 0.84418664, 0.67651434, 0.72785806, 0.95145796])
np.random.rand(3,