一、NumPy
1、简介:
官网链接:http://www.numpy.org/
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
2、基本功能:
- 快速高效的多维数组对象ndarray
- 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
- 用于读写硬盘上基于数组的数据集的工具
- 线性代数运算、傅里叶变换,以及随机数生成
- 用于将C、C++、Fortran代码集成到Python的工具
- 除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一
- 个主要作用,即作为在算法之间传递数据的容器。
3、NumPy的ndarray 创建ndarray
* 数组创建函数
demo:
import numpy print('使用普通一维数组生成NumPy一维数组') data = [6, 7.5, 8, 0, 1] arr = numpy.array(data) print(arr) print(arr.dtype) print('使用普通二维数组生成NumPy二维数组') data = [[1, 2, 3, 4], [5, 6, 7, 8]] arr = numpy.array(data) print(arr) print('打印数组维度') print(arr.shape) print('使用zeros/empty') print(numpy.zeros(10)) # 生成包含10个0的一维数组 print(numpy.zeros((3, 6))) # 生成3*6的二维数组 print(numpy.empty((2, 3, 2))) # 生成2*3*2的三维数组,所有元素未初始化。 print print('使用arrange生成连续元素') print(numpy.arange(15)) # [0, 1, 2, ..., 14]
输出:
使用普通一维数组生成NumPy一维数组 [6. 7.5 8. 0. 1. ] float64 使用普通二维数组生成NumPy二维数组 [[1 2 3 4] [5 6 7 8]] 打印数组维度 (2, 4) 使用zeros/empty [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]] [[[8.82769181e+025 7.36662981e+228] [7.54894003e+252 2.95479883e+137] [1.42800637e+248 2.64686750e+180]] [[1.09936856e+248 6.99481925e+228] [7.54894003e+252 7.67109635e+170] [2.64686750e+180 5.63234836e-322]]] 使用arrange生成连续元素 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
4、NumPy的ndarray NumPy数据类型
demo:
import numpy as np print('生成数组时指定数据类型') arr = np.array([1, 2, 3], dtype = np.float64) # 生成ndarray数组,数据类型:float64 print(arr.dtype) arr = np.array([1, 2, 3], dtype = np.int32) print(arr.dtype) print ('使用astype复制数组并转换数据类型') int_arr = np.array([1, 2, 3, 4, 5]) float_arr = int_arr.astype(np.float) print (int_arr.dtype) print (float_arr.dtype) print ('使用astype将float转换为int时小数部分被舍弃') float_arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1]) int_arr = float_arr.astype(dtype = np.int) print (int_arr) print ('使用astype把字符串转换为数组,如果失败抛出异常。') str_arr = np.array(['1.25', '-9.6', '42'], dtype = np.string_) float_arr = str_arr.astype(dtype = np.float) print (float_arr) print ('astype使用其它数组的数据类型作为参数') int_arr = np.arange(10) float_arr = np.array([.23, 0.270, .357, 0.44, 0.5], dtype = np.float64) print (int_arr.astype(float_arr.dtype)) print (int_arr[0], int_arr[1] ) # astype做了复制,数组本身不变。
输出:
生成数组时指定数据类型 float64 int32 使用astype复制数组并转换数据类型 int32 float64 使用astype将float转换为int时小数部分被舍弃 [ 3 -1 -2 0 12 10] 使用astype把字符串转换为数组,如果失败抛出异常。 [ 1.25 -9.6 42. ] astype使用其它数组的数据类型作为参数 [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] 0 1
5、NumPy的ndarray 数组和标量之间的运算
- 不用编写循环即可对数据执行批量运算
- 大小相等的数组之间的任何算术运算都会将运算应用到元素级
- 数组与标量的算术运算也会将那个标量值传播到各个元素
demo:
import numpy as np # 数组乘法/减法,对应元素相乘/相减。 arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]]) print (arr * arr) # 不需要做循环,相当于对应元素进行平方处理 print (arr - arr) # 标量操作作用在数组的每个元素上 arr = np.array([[1.0, 2.0, 3.0], [4., 5., 6.]]) print (1 / arr) print (arr ** 0.5) # 开根号
输出:
[[ 1. 4. 9.] [16. 25. 36.]] [[0. 0. 0.] [0. 0. 0.]] [[1. 0.5 0.33333333] [0.25 0.2 0.16666667]] [[1. 1.41421356 1.73205081] [2. 2.23606798 2.44948974]]