欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Numpy入门学习

程序员文章站 2023-12-27 18:11:27
...

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.])

相关标签: Numpy Python

上一篇:

下一篇: