python numpy模块
Numpy
NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
NumPy的主要功能:
ndarray,一个多维数组结构,高效且节省空间
无需循环对整组数据进行快速运算的数学函数
读写磁盘数据的工具以及用于操作内存映射文件的工具
线性代数、随机数生成和傅里叶变换功能
用于集成C、C++等代码的工具
安装方法:pip install numpy
引用方式:import numpy as np
创建ndarray:np.array()
应用场景:
例1:已知若干家跨国公司的市值(美元),将其换算为人民币
例2:已知购物车中每件商品的价格与商品件数,求总金额
ndarray还可以是多维数组,但元素类型必须相同
常用属性:
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
dtype:
bool_, int(8,16,32,64), uint(8,16,32,64), float(16,32,64)
类型转换:astype()
创建ndarray:
array() 将列表转换为数组,可选择显式指定dtype >>> np.array([1, 2, 3]) array([1, 2, 3]) arange() range的numpy版,支持浮点数 >>> np.arange(3.0) array([ 0., 1., 2.]) linspace() 类似arange(),第三个参数为数组长度 >>> np.linspace(2.0, 3.0, num=5) array([ 2. , 2.25, 2.5 , 2.75, 3. ]) zeros() 根据指定形状和dtype创建全0数组 >>> np.zeros((2, 1)) array([[ 0.], [ 0.]]) ones() 根据指定形状和dtype创建全1数组 np.ones((2, 1)) array([[ 1.], [ 1.]]) empty() 根据指定形状和dtype创建空数组(随机值) np.empty([2, 2], dtype=int) array([[-1073741821, -1067949133], [ 496041986, 19249760]]) #random eye() 根据指定边长和dtype创建单位矩阵 >>> np.eye(2, dtype=int) array([[1, 0], [0, 1]]) reshape() 分解,合并 >>> a = np.array([[1,2,3], [4,5,6]]) >>> np.reshape(a, 6) array([1, 2, 3, 4, 5, 6]) >>> np.reshape(a, (3,-1)) array([[1, 2], [3, 4], [5, 6]])
数组和标量之间的运算
a+1 a*3 1//a(整除) a**0.5
同样大小数组之间的运算
a+b a/b a**b
数组的索引
a[5] a2[2][3] a2[2,3] # 第几维数组的第几个索引,跟上面的写法得到结果一样 数组的切片 a[5:8] a[:3] = 1 # 切片的数组都赋值1 a2[1:2, :4] # 第二个数组,0到3的索引 a2[:,:1] # 所有数组,索引为0的值 a2[:,1] # 所有数组,索引为1的值 与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 b = a[:4] b[-1] = 250 【解决方法:copy()】# 这样b是一个新的内存地址 b = a[:4].copy() b[-1] = 250
布尔型索引
给一个数组,选出数组中所有大于5的数。
a[a>5]
原理:
a>5会对a中的每一个元素进行判断,返回一个布尔数组
布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组
给一个数组,选出数组中所有大于5的偶数。
a[(a>5) & (a%2==0)]
给一个数组,选出数组中所有大于5的数和偶数。
a[(a>5) | (a%2==0)]
花式索引
对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
a[[1,3,4,6,7]]
对一个二维数组,选出其第一列和第三列,组成新的二维数组。
a[:,[1,3]]
通过用函数
一元函数:
abs #绝对值
sqrt #开方
ceil #向上取整
floor #向下取整
rint #四舍五入
trunc #ceil
modf #把小数整数分开
>>> np.modf([0, 3.5])
(array([ 0. , 0.5]), array([ 0., 3.]))
>>> np.modf(-0.5)
(-0.5, -0)
isnan
0/0 是nan
isinf
In [60]: a = np.arange(1,5) In [61]: b = np.arange(1,5) In [62]: b[-1]=0 In [63]: a/b C:\Python35\Scripts\ipython:1: RuntimeWarning: divide by zero encountered in tru e_divide Out[63]: array([ 1., 1., 1., inf]) In [64]: c=a/b C:\Python35\Scripts\ipython:1: RuntimeWarning: divide by zero encountered in tru e_divide # 结合布尔索引取值 In [65]: c[~np.isinf(c)] Out[65]: array([ 1., 1., 1.])
二元函数:
maximum
np.maximum(a,b) #得到这俩列表中有最大的数的元素
minimum #最小
数学和统计方法
sum 求和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
np.random 随机数
rand 给定形状产生随机数组(0到1之间的数)
randint 给定形状产生随机整数
choice 给定形状产生随机选择
shuffle 与random.shuffle相同
uniform 给定形状产生随机数组

浙公网安备 33010602011771号