Numpy入门学习

numpy库学习

在此只介绍常用的简单的一些接口以入门,详细内容可参考官网或中文帮助文档:
https://www.numpy.org/
https://www.numpy.org.cn/index.html

1. 基本结构

基本属性:dtype,size,shape,ndim,fill等;
切片与索引:与Python一致;
矩阵:查找某列array[0,1:3](1到3列第0行),赋值: = 是引用,复制:copy(),构造等差数组0到100 差为10: np.arange(0,100,10);
掩模:mask=array1>0.5;array2[mask];
指定数据类型:np.asarray(array,dtype = np.float32)

import numpy as np
array=np.array([1,2,3,4,5])
array
array([1, 2, 3, 4, 5])
array+1
array([2, 3, 4, 5, 6])
ndarray=np.array([1,2,3,4.4,5,'ss'])
ndarray
array(['1', '2', '3', '4.4', '5', 'ss'], dtype='<U32')

基本属性

ndarray.dtype
dtype('<U32')
ndarray.shape
(6,)
ndarray.size
6
ndarray.ndim
1

矩阵

matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
matrix
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
matrix[1:]#后两行
array([[4, 5, 6],
       [7, 8, 9]])
matrix[1,0:2]#第一行从0列开始取2个
array([4, 5])
juzhen=matrix#直接赋值是引用
juzhen[2,2]=0
matrix
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 0]])
matrix
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 0]])
fjuzheng=matrix.copy()#复制
fjuzheng[1,1]=0
fjuzheng
array([[1, 2, 3],
       [4, 0, 6],
       [7, 8, 0]])
matrix
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 0]])
mya=np.arange(10,100,23)
mya
array([10, 33, 56, 79])
mya.reshape(2,2)#重新构建为2x2矩阵形式
array([[10, 33],
       [56, 79]])
mask=mya>40
mask
array([False, False,  True,  True])
mya[mask]
array([56, 79])
np.asarray(mya,dtype = np.float32)
array([10., 33., 56., 79.], dtype=float32)

2. 运算

内部元素的计算:求和:sum();累乘:prod();均值:mean();标准差:std();方差:var();找索引:argmin()等;四舍五入:round();拉伸clip();
数组与数组间的运算:
对应位置相乘:multiply();矩阵乘法dot();与或非:logical_and,logical_or,logical_not

a=np.array([1.1,2.2,3.3,4.4,5.1,6.2,7.3,8.4,9.9,10.8,11.7,12.6])
a.reshape(4,3)
array([[ 1.1,  2.2,  3.3],
       [ 4.4,  5.1,  6.2],
       [ 7.3,  8.4,  9.9],
       [10.8, 11.7, 12.6]])
b=a.sum()+a.prod()+a.mean()+a.std()+a.var()
b
1073893946.6267273
a.argmax()
11
c=a.round().copy()
c
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8., 10., 11., 12., 13.])
d=c.clip(3,10)
d
array([ 3.,  3.,  3.,  4.,  5.,  6.,  7.,  8., 10., 10., 10., 10.])
a=np.array([1,2,3,4,5,6,7,8,9,8,7,6])
b=np.array([9,8,7,6,5,4,3,2,1,1,2,3])
a.shape=4,3
b.shape=3,4
#np.multiply(a,b)
np.dot(a,b)
array([[ 22,  19,  19,  19],
       [ 67,  58,  55,  52],
       [112,  97,  91,  85],
       [113,  98,  89,  80]])
c=np.array([9,8,7,6,6,5,4,3,3,2,1,0])
c.shape=4,3
np.multiply(a,c)
array([[ 9, 16, 21],
       [24, 30, 30],
       [28, 24, 27],
       [16,  7,  0]])
a*c
array([[ 9, 16, 21],
       [24, 30, 30],
       [28, 24, 27],
       [16,  7,  0]])
np.logical_and(a,c)
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True, False]])
np.logical_or(a,c)
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]])
np.logical_not(a,c)
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

3. 数组

生成:arange();linspace();logspace();格网: np.meshgrid(x,y);行向量:np.r_[0:10:1];列向量:np.c_[0:10:1];0向量:np.zeros(3)/np.ones(3);单位矩阵:np.identity(5);
形状维度:array[np.newaxis,:]增加新维度;array.squeeze()压缩;array.transpose()/array.T转置;np.concatenate((a,b))#链接; np.concatenate((a,b),axis = 0)#竖着拼接;np.vstack((a,b))#v竖着;np.hstack((a,b))#h横着;a.flatten()#拉平;a.ravel()#拉平
排序:sort();argsort()

a=np.arange(5,8,0.5)#最后一个参数是分割距离
a
array([5. , 5.5, 6. , 6.5, 7. , 7.5])
b=np.linspace(5,10,5)#最后一个参数是取值个数
b
array([ 5.  ,  6.25,  7.5 ,  8.75, 10.  ])
a=np.logspace(0,3,4)
a
array([   1.,   10.,  100., 1000.])
np.meshgrid(a,b)
[array([[5. , 5.5, 6. , 6.5, 7. , 7.5],
        [5. , 5.5, 6. , 6.5, 7. , 7.5],
        [5. , 5.5, 6. , 6.5, 7. , 7.5],
        [5. , 5.5, 6. , 6.5, 7. , 7.5],
        [5. , 5.5, 6. , 6.5, 7. , 7.5]]),
 array([[ 5.  ,  5.  ,  5.  ,  5.  ,  5.  ,  5.  ],
        [ 6.25,  6.25,  6.25,  6.25,  6.25,  6.25],
        [ 7.5 ,  7.5 ,  7.5 ,  7.5 ,  7.5 ,  7.5 ],
        [ 8.75,  8.75,  8.75,  8.75,  8.75,  8.75],
        [10.  , 10.  , 10.  , 10.  , 10.  , 10.  ]])]
np.r_[1:9:3]
array([1, 4, 7])
np.c_[1:9:3]
array([[1],
       [4],
       [7]])
np.ones(3,dtype=int)
array([1, 1, 1])
np.identity(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
a=np.arange(5,8,0.5)
#b=np.linspace(5,10,5)
a
array([5. , 5.5, 6. , 6.5, 7. , 7.5])
a[np.newaxis,:,np.newaxis]
array([[[5. ],
        [5.5],
        [6. ],
        [6.5],
        [7. ],
        [7.5]]])
a.shape=2,3
a
array([[5. , 5.5, 6. ],
       [6.5, 7. , 7.5]])
a[0,2]=0
a[1,2]=0
a
array([[5. , 5.5, 0. ],
       [6.5, 7. , 0. ]])
b=a.T
b
array([[5. , 6.5],
       [5.5, 7. ],
       [0. , 0. ]])
c=a
np.concatenate((a,c),axis = 1)
array([[5. , 5.5, 0. , 5. , 5.5, 0. ],
       [6.5, 7. , 0. , 6.5, 7. , 0. ]])
a.flatten()
array([5. , 5.5, 0. , 6.5, 7. , 0. ])
a.ravel()
array([5. , 5.5, 0. , 6.5, 7. , 0. ])

4. 随机模块

#所有的值都是从0到1
np.random.rand(2,2)
array([[0.71729093, 0.54947991],
       [0.50235575, 0.97256068]])
#返回的是随机的整数,左闭右开
np.random.randint(100,size = (2,3))#100以内的随机数2行3列
array([[90, 41, 75],
       [55, 65, 73]])
np.random.random_sample()#0-1之间的随机数
0.4315886964827691
np.random.randint(0,10,3)#0-10找3个数
array([4, 0, 6])
mu, sigma = 0,0.1#高斯分布
a=np.random.normal(mu,sigma,9)#9个数
a
array([ 0.17, -0.06,  0.05, -0.1 ,  0.06, -0.08, -0.13, -0.09,  0.17])
np.set_printoptions(precision = 2)#设置打印精度
np.random.shuffle(a)#洗牌
a
array([-0.09,  0.05,  0.17, -0.06, -0.08,  0.06, -0.13,  0.17, -0.1 ])
np.random.seed(10)#设置种子后随机的方法是一样的
mu, sigma = 0,0.1
np.random.normal(mu,sigma,10)
array([ 0.13,  0.07, -0.15, -0.  ,  0.06, -0.07,  0.03,  0.01,  0.  ,
       -0.02])

5. 数据读写

%%writefile aaa.txt
1 2 3 4 5 6
2 3 5 8 7 9
Writing aaa.txt
data = []
with open('aaa.txt') as f:
    for line in f.readlines():
        fileds = line.split()#空格切分
        cur_data = [float(x) for x in fileds]
        data.append(cur_data)
data = np.array(data)
data
array([[1., 2., 3., 4., 5., 6.],
       [2., 3., 5., 8., 7., 9.]])
data=[]
data = np.loadtxt('aaa.txt')
data
array([[1., 2., 3., 4., 5., 6.],
       [2., 3., 5., 8., 7., 9.]])
data = np.loadtxt('aaa.txt',delimiter = ' ')#分隔缝读取
data
array([[1., 2., 3., 4., 5., 6.],
       [2., 3., 5., 8., 7., 9.]])
data = np.loadtxt('aaa.txt',delimiter = ' ',skiprows = 1)#去掉第一行
data
array([2., 3., 5., 8., 7., 9.])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值