十分钟numpy使用入门

当然,这个前提是所需要的python、numpy环境已经配置好了。

1.numpy简介

一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

2.numpy基本知识入门

没有安装numpy的,可以在window系统的命令行输入:pip install numpy安装即可
以下将以案例的形式介绍如何使用。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2018-07-28 13:35:28
# @Author  : JackPI ([email protected])
# @Link    : https://blog.csdn.net/meiqi0538

# 导包
import numpy as np
#线性方程处理
from numpy.linalg import *

def main():
    #创建一个list列表
    py_list=[[1,2,3],[4,5,6]]  
    #可以通过print(type(py_list))查看py_list的类型为list
    print(type(py_list))
    print(py_list)
    #将列表转为np的数组类型
    #其中的dtype指定数组中的数据类型(bool,int,int8/16/64/128,uint8/16/32/64/128,float,float16/32/64/128,complex64/128)
    np_list=np.array(py_list,dtype=np.float) 
    #1.基本使用 
    #可以通过print(type(np_list))查看np_list的类型为numpy.ndarray
    #np_list.shape:数组的形状
    #np_list.ndim:数组的维度
    #np_list.dtype:数组内数据的类型
    #np_list.itemszie:数组内数据元素占据内存大小
    #np_list.size:数组的大小(元素的个数)
    print(type(np_list))
    print(np_list.shape)
    print(np_list.ndim)
    print(np_list.dtype)
    print(np_list.itemsize)
    print(np_list.size)
    print(np_list)
    #2.常用数组
    #创建2行4列的全0数组;可用于数值对比,数值初始化
    print(np.zeros([2,4]))
    #创建3行5列的全1数组
    print(np.ones([3,5]))
    #随机数的生成方法,生成2行4列的随机数矩阵(0,1),均匀分布(不加参数时:就创建一个随机数)
    print(np.random.rand(2,4))
    #np.random.randint(1,10,3) 生成3个随机1-10的整数
    #np.random.randn(2,4) 生成2行4列的标准正太分别的随机数
    #从指定内容中随机选出数据
    print(np.random.choice([10,20,30,2,8]))
    #生成Beta Distribution(贝叶斯分析中大量使用)
    #np.random.beta(1,10,100) 生成100个,1-10 Beta分布的数据
    print(np.random.beta(1,10,100))
    #3.常用操作
    #生成1-10,间隔为1的等差数列,并将该数列转为2行5列的数据(5也可以改为-1)
    lst1=np.arange(1,11).reshape([2,5])
    #将数组中的每个元素进行自然指数操作(1,2次幂)
    print(np.exp(lst1))
    print(np.exp2(lst1))
    #开方
    print(np.sqrt(lst1))
    #sin
    print(np.sin(lst1))
    #取对数
    print(np.log(lst1))
    #创建三维数组
    lst2=np.array([
        [[1,2,3,4],
         [4,5,6,7]],
        [[7,8,9,10],
         [10,11,12,13]],
        [[14,15,16,17],
         [18,19,20,21]]
        ])
    #计算数组中所有数据的和,参数为axis,代表的时数组的维度
    print(lst2.sum())
    #axis=0,从外层看,只有三个元素,这样,三个元素对应的素数进行相加,如第一个:1+7+14
    print(lst2.sum(axis=0))
    #axis=1,再深入一层对应值进行计算,如:1+4;2+5
    print(lst2.sum(axis=1))
    #axis=2,再深入一层再进行计算,如:1+2+3+4;4+5+6+7
    print(lst2.sum(axis=2))
    #找出数组元素中,最大的值,同理也有参数axis,其用法与以上相同,相反也会有min函数计算
    print(lst2.max())
    #对多个数组进行操作
    lst3=np.array([10,20,30,40])
    lst4=np.array([4,3,2,1])
    #计算两个数组对应值的和,类似地可以进行:减,乘,除,平方(lst3**2)
    print(lst3+lst4)
    #将一个数组追加到另一个数组
    print(np.concatenate((lst3,lst4),axis=0))
    #将两个数组拼成一个大数组
    print(np.vstack((lst3,lst4)))
    print("*"*50)
    #将一个数组追加到另一个数组
    print(np.hstack((lst3,lst4)))
    #将数组lst3进行拆分为2个子数组
    print(np.split(lst3,2))
    #4.线性方程组

    #n维单位矩阵
    print(np.eye(3))
    lst5=np.array([[1.,2.],[3.,4.]])
    #获取矩阵的逆
    print(inv(lst5))
    #矩阵转置
    print(lst5.transpose())
    #求矩阵的行列式
    print(det(lst5))
    #求特征值(第一个)和特征向量(第二个)
    print(eig(lst5))
    #求解方程 1x+2y=5;3x+4y=7
    y=np.array([[5.],[7.]])
    print(solve(lst5,y)) #计算结果

if __name__ == '__main__':
    main()

这里写图片描述

猜你喜欢

转载自blog.csdn.net/meiqi0538/article/details/81262445