numpy

Ipython

命令

启动:
	ipython notebook/jupyter notebook
Ipython帮助文档
	Help(参数)方法
	?
	??可以显示源码
	Shift-Enter : 运行本单元,选中下个单元

    Y : 单元转入代码状态
    M :单元转入markdown状态
    A : 在上方插入新单元
    B : 在下方插入新单元
    Double-D:伤处一行
    Ctrl-A : 全选
    Ctrl-Z : 复原
    Shift-Enter : 运行本单元,选中下一单元
    Ctrl-Enter : 运行本单元
    Alt-Enter : 运行本单元,在下面插入一单元

Ipython魔法指令

运行外部Python文件:
	%run a.py(当前路径)
	
运行计时(计算statement的运行时间):
    	%time statement
    计算statement的平均运行时间:
    	%timeit statement
    两个百分号来测试多行代码的平均运行时间:
        %%timeit
    	statement1
   		statement2
   		statement3
   	%time一般用于耗时长的代码段
	%timeit一般用于耗时短的代码段
	
查看当前会话中的所有变量与函数
	查看所有变量与函数名称:
		%who
	查看详细信息:
		%whos
	返回一个字符串列表
		%who_ls

Numpy

import numpy as np

ndarray创建

使用np.array()

一维

test = np.array([1,2,3,4,5])

多维

test = np.array([[1,2,3],[4,5,6]])

使用np的routines函数创建

np.ones(shape, dtype=None, order='C')
np.full(shape, fill_value, dtype=None, order='C')
np.eye(N, M=None, k=0, dtype=float)
    #单位矩阵     任何一个有解的矩阵都可以约成单元矩阵   满秩矩阵
    #无解的矩阵    叫奇异矩阵
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
	 线性的
np.arange([start, ]stop, [step, ]dtype=None)
np.random.randint(low, high=None, size=None, dtype='l')
np.random.randn(d0, d1, ..., dn)
	标准正太分布
np.random.random(size=None)	
	生成0到1的随机数,左闭右开

ndarray的属性

ndim:维度 
shape:形状(各维度的长度) 
size:总长度
dtype:元素类型

数据类型转换

dog = np.random.randint(0,255, size = (456,730,3))
dog = dog.astype("uint8")
plt.imshow(dog)

ndarray的基本操作

索引

切片

nd[0:2]	左闭右开
nd[:-2]

变形(nd.reshape)

使用reshape函数,注意参数是一个tuple!
nd5 = nd4.reshape((1,12))

级联np.concatenate()

注意:
	级联的参数是列表:一定要加中括号
    维度必须相同
    形状相符
【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向
可通过axis参数改变级联的方向
    axis
    np.hstack与np.vstack 水平级联与垂直级联
    
nd1 = np.random.randint(0,10,size = (4,6))
nd2 = np.random.randint(50,100, size = (2,6))
#列相同, axis 轴0 (行)  行上面进行级联   保证列必须相同
np.concatenate([nd1,nd2], axis = 0)

切分

np.split()

np.hsplit()

np.vsplit()

nd = np.random.randint(0,100,size = (5,6))
np.vsplit(nd, [1,2,3])
np.hsplit(nd, [1,3,5])

np.split(nd, [2],axis = 1)
    #axis = 0, vsplit 一样
    #axis = 1 , hsplit 一样

副本

    所有赋值运算不会为ndarray的任何元素创建副本。
    对赋值后的对象的操作也对原来的对象生效
    
    可使用copy()函数创建副本
		
    nd = np.random.randint(0,10,size = 6)
    nd_copy = nd.copy()

ndarray的聚合操作

求和
	np.sum
最大最小值:
	np.max/ np.min
其他聚合操作
	操作文件
	求平均值
	求最大值
	求最小值
	计算标准差
	Function Name    NaN-safe Version    Description
    np.sum    np.nansum    Compute sum of elements
    np.prod    np.nanprod    Compute product of elements
    np.mean    np.nanmean    Compute mean of elements
    np.std    np.nanstd    Compute standard deviation
    np.var    np.nanvar    Compute variance
    np.min    np.nanmin    Find minimum value
    np.max    np.nanmax    Find maximum value
    np.argmin    np.nanargmin    Find index of minimum value
    np.argmax    np.nanargmax    Find index of maximum value
    np.median    np.nanmedian    Compute median of elements
    np.percentile    np.nanpercentile    Compute rank-based statistics of elements
    np.any    N/A    Evaluate whether any elements are true
    np.all    N/A    Evaluate whether all elements are true
    np.power 幂运算
    	np.power([2,3,4], 3)

np.sum 和 np.nansum 的区别 nan not a number

nd = np.array([0,2,3,np.nan])
nd.sum()
#任何一个数操作nan 都是nan 
np.nansum(nd)
#会把nan当成一个0.0

ndarray的矩阵操作

基本矩阵操作

加减乘除

广播
	nd +3
加
	np.add(nd, 3)
减
	np.subtract(nd, 100)
乘
	np.multiply(nd, 0)
除
	np.divide(nd, 10)

矩阵积np.dot

nd1 = np.random.randint(0,10,size = (2,3))
nd2 = np.random.randint(1,10,size = (3,2))
np.dot(nd1,nd2)

真正矩阵操作(未整理)

矩阵创建
    使用 mat 方法将 2 维数组转化为矩阵
    也可以使用 Matlab 的语法传入一个字符串来生成矩阵
    利用分块创造新的矩阵
矩阵运算
	矩阵与向量的乘法
	逆矩阵
	矩阵指数表示矩阵连乘:

广播机制

【重要】ndarray广播机制的两条规则
	规则一:为缺失的维度补1
	规则二:假定缺失元素用已有值填充
        m = np.ones((2, 3)) a = np.arange(3) 
        m+a
        a = np.arange(3).reshape((3, 1)) b = np.arange(3) 
        a+b

ndarray的排序

排序

def sort_nd(nd):
    for i in range(nd.size):
        for j in range(i, nd.size):
            if nd[i] >  nd[j]:
                nd[i],nd[j] = nd[j], nd[i]
    return nd
    
    
def sort_nd2(nd):
    for i in range(nd.size):      
        index_min = np.argmin(nd[i:])+ i   
        nd[i], nd[index_min] = nd[index_min], nd[i]
    return nd

快速排序

np.sort()与ndarray.sort()都可以,但有区别:
    np.sort()不改变输入
    ndarray.sort()本地处理,不占用空间,但改变输入
np.sort()不改变输入
	ndarray.sort()本地处理,不占用空间,但改变输入

部分排序np.partition(a,k)

np.partition(a,k)
有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。
当k为正时,我们想要得到最小的k个数
当k为负时,我们想要得到最大的k个数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值