numpy(自用)

numpy(numerical python) 一个在Python中做科学计算的基础库,重在数值计算,也是大部分python科学计算库的基础
库,多用于在大型、多维数组上执行数值运算

安装numpy

pip install numpy

创建数组

np.array([1,2,3,4,5])
np.array(range(1,6))
np.arange(1,6)

numpy.zeros
返回特定大小,以 0 填充的新数组。

numpy.ones
返回特定大小,以 1 填充的新数组

属性

ndarray.shape
这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。

import numpy as np

a = [[1, 2, 3], [4, 5, 6]]
a = np.array(a)
print(a)
print(a.ndim)  # 维度 2
print(a.shape)  # 形状 (2, 3)

b = a.reshape(a.shape[0] * a.shape[1])  # 改变数组形状
print(b)  # [1 2 3 4 5 6]
c = a.flatten()  # 转化为一维
print(c)  # [1 2 3 4 5 6]
print(a.astype(float))  # 改变类型
import numpy as np 
a = np.array([[1,2,3],[4,5,6]]) 
b = a.reshape(3,2)  
print b

ndarray.ndim
这一数组属性返回数组的维数。

运算

矩阵运算:加、减、乘(,对应元素相乘)、对每个元素平方(**,注意是两个)

import numpy as np


a = np.arange(10).reshape(2,5)
print(a)
b = np.array([[1], [2]])
print(b)
c = np.array(range(5))
print("c:",c)
print("*"*100)
print(a + b)
print(a + c)

数学函数:sin、cos等

逻辑运算

矩阵相乘(dot,矩阵乘法)
写法 E=np.dot(A,C)或者E=A.dot©

矩阵元素相关 sum()、min()、max()
需要按行或者列进行的话要对axis进行赋值,sxis=0以列为查找单位,sxis=1以行为查找单位
print(‘sum=’,np.sum(A,axis=1))
print(‘min=’,np.min(A,axis=0))

求矩阵的最大和最小索引argmin()和argmax()

求矩阵元素的平均值 mean()、average()

中位数median()

分别对前面的值累加cumsum()

累差运算diff(),计算每一行中后一项与前一项的差

nonzero(),将所有非零元素的行与列坐标分隔开,重构成两个分别关于行和列的矩阵

sort()排序,仅针对每一行

转置 np.transport(A)或者A.T

clip(),比较替换,clip(5,9) 所有小于5的替换为5,大于9的替换为9

索引

a = np.array(range(16)).reshape((4, 4))
print(a)
print("-"*100)
# print(a[:2]) #取前2行0,1
# print(a[:,:2])  # :取所有行,前2列
# print(a[2,3])  # 第2,3位数
# print(a[[1,3],:2])  #取第1,第3行,前2列
print(a[[1,3],[1,3]])  #取第1行的第1个,取第3行的第3

在第一个列表中,号前为行后为列,单独:为全选,:5为从0到4行

读取数据的方法

def loadtxt(fname, dtype=float, comments='#', delimiter=None,
            converters=None, skiprows=0, usecols=None, unpack=False,
            ndmin=0, encoding='bytes', max_rows=None):

delimiter 分割字符串
skiprows 跳过前x行
usecols 读取指定的列,索引,元组类型
unpack 行列转换

numpy中的转置

转置是一种变换,对于numpy中的数组来说,就是在对角线方向交换数据,目的也是为了更方
便的去处理数据
np.arange(20).reshape(4,5).transpose()
np.arange(20).reshape(4,5).T
np.arange(20).reshape(4,5).swapaxes(1,0)

轴(axis)

在numpy中可以理解为方向,使用0,1,2…数字表示,对于一个一维数组,只有一个0轴,对于2维
数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(3,2, 3)),有0,1,2轴
有了轴的概念之后,我们计算会更加方便,比如计算一个2维数组的平均值,必须指定是计算
哪个方向上面的数字的平均值

numpy中的三元运算符

如何把t中小于10的数字替换成0,大于20的替换成20
np.where(t<10,0,20)

numpy中的clip

将小于等于10的替换成10,将大于18的替换成18
t.clip(10,18)

numpy中的nan和inf

nan(NAN,Nan):not a number表示不是一个数字
inf(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷

numpy中的nan的注意点

1.两个nan是不相等的
2.判断数组中nan的个数
3.nan和任何值计算都为nan

求nan的个数
a = np.array([1, 2, np.nan, np.nan, 3])
print(a)
print(a != a)
print(np.count_nonzero(a != a))
print(np.isnan(a))
print(np.count_nonzero(np.isnan(a)))

numpy常用的方法

求和:t.sum(axis=None)
均值:t.mean(a,axis=None)
中值:np.median(t,axis=None)
最大值:t.max(axis=None)
最小值:t.min(axis=None)
极值:np.ptp(t,axis=None)
标准差:t.std(axis=None)

数组的拼接

我们希望把之前案例中两个国家的数据方法一起来研究分析,那么应该怎做?
np.vstack() 垂直拼接
np.hstack() 水平拼接

获取最大值最小值的位置

np.argmax(t,axis=0)
np.argmin(t,axis=1)
创建一个对角线为1的正方形数组(方阵):np.eye(3)

numpy的copy

1.a=b 完全不复制,a和b相互影响
2.a = b.copy(),复制,a和b互不影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值