1、 NumPy基础:数组与向量化计算
NumPy,是Numerical Python的简称,它是目前Python数值计算中最为重要的基础包。使用numpy
模块处理含有大量数组的数据非常有效:
In [1]: import numpy as np
In [3]: arr = np.arange(1000000)
In [4]: l = list(range(1000000))
In [3]: %time for _ in range(10): arr * 2
# Wall time: 28.9 ms
In [6]: %time for _ in range(10): l = [x * 2 for x in l]
# Wall time: 968 ms
显然使用numpy
模块,更快。
1.1 NumPy ndarray:多维数组对象
NumPy的核心特征之一就是N-
维数组对象——ndarray
。ndarray
是Python中一个快速、灵活的大型数据集容器。
data = np.random.randn(2, 3)
print(data)
'''
[[-0.7442156 2.04537597 -0.18150464]
[-2.56139122 0.53360941 0.90499989]]
'''
print(data.shape)
print(data.dtype)
'''
(2, 3)
float64
'''
1.1.1 生成ndarray
列别表的转换:
In [2]: data1 = [6, 7.4, 7, 2, 0]
In [3]: arr1 = np.array(data1)
In [4]: arr1
Out[4]: array([ 6. , 7.4, 7. , 2. , 0. ])
嵌套序列,例如同等长度的列表,将会自动转换成多维数组:
In [5]: data2 = [[1,2,3,4], [5,6,7,8]]
In [6]: arr2 = np.array(data2)
In [7]: arr2
Out[7]:
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
dtype
可以用于推断数据类型:
In [8]: arr2.dtype
Out[8]: dtype('int32')
给定长度及形状后,zeros
可以一次性创造全0
数组,ones
可以一次性创造全1
数组。empty
则可以创建一个没有初始化数值的数组。
In [9]: np.zeros(