1.%timeit
%timeit :ipython中统计运行时间的魔术方法(多次运行取平均值)
import numpy as np
values = np.arange(1, 1000000)
%timeit 1/values
2.numpy
Numpy 是由C语言编写的,因此相对来说运行速度更快。此外,还有以下方面原因:
(1)Numpy数组内的数据类型必须是统一的,如全部是浮点型,而Python列表支持任意类型数据的填充
(2)Numpy数组内的数据连续存储在内存中,而Python列表的数据分散在内存中
在数据处理的过程中,遇到使用“Python for循环” 实现一些向量化、矩阵化操作的时候,要优先考虑用Numpy
2.1 用列表创建
import numpy as np
x = np.array([1, 2, 3, 4, 5])
print(x)
[1 2 3 4 5]
设置数组的数据类型
x = np.array([1, 2, 3, 4, 5], dtype="float32")
print(x)
print(type(x[0]))
[1. 2. 3. 4. 5.]
<class ‘numpy.float32’>
二维数组
x = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(x)
print(x.shape)
[[1 2 3]
[4 5 6]
[7 8 9]]
(3, 3)
2.2从头创建数组
2.2.1创建长度为5的数组,值都为0
np.zeros(5, dtype=int)
array([0, 0, 0, 0, 0])
2.2.2创建一个2*4的浮点型数组,值都为1
np.ones((2, 4), dtype=float)
array([[1., 1., 1., 1.],
[1., 1., 1., 1.]])
2.2.3创建一个3*5的数组,值都为8
np.full((3, 5), 8)
array([[8, 8, 8, 8, 8],
[8, 8, 8, 8, 8],
[8, 8, 8, 8, 8]])
2.2.4创建一个3*3的单位矩阵
np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
2.2.5创建一个线性序列数组,从1开始,到15结束,步长为2
np.arange(1, 15, 2)
array([ 1, 3, 5, 7, 9, 11, 13])
2.2.6创建一个3*3的,在0~1之间均匀分布的随机数构成的数组
np.random.random((3,3))
array([[0.59456354, 0.95854248, 0.9951515 ],
[0.4014392 , 0.04666012, 0.40776128],
[0.66377712, 0.36550437, 0.89673612]])
2.2.7创建一个3*3的,在[0,10)之间随机整数构成的数组
np.random.randint(0, 10, (3,3))
array([[9, 1, 9],
[0, 3, 9],
[8, 5, 4]])