机器学习的最基础模块就是numpy模块了,而numpy模块中的数组操作又是重中之重,所以我们要把数组的各种方法弄得明明白白的,以下就是数组的一些常用方法

1.创建各种各样的数组:

import numpy as np
import matplotlib.pyplot as plt print(np.zeros(10)) #一维全零数组
print(np.zeros((3,3),dtype=np.int)) #多维tupple数组 3行3列 可以加数据类型
print(np.ones(10)) #一维全1数组
print(np.ones((4,4))) #多维全1数组
print(np.full((3,5),8)) #可以指定数组元素的值
print(np.identity(4)) #创建单位矩阵
print(np.eye(4,4,1)) #4行4列单位矩阵 对角线从下标1开始 print(np.array([1,23,4,'ltf','fjf'])) #可以随便传入数据 一维数组
print(np.array([[1,2,3],['ltf','lsq','fjf'],['男','女','人妖']])) #多维数组,随便定义、 a=np.array([[1,2,3],[4,3,6]])
b=np.full_like(a,3.2)
c=np.ones_like(a)
print(b)
print(c) #根据一个向量创建斜对角线方阵 也可以指定对角线位置
arr2d=np.diag([1,2,3,4])
print(arr2d) print(np.arange(1,6)) #类似于range 不包含上界
print(np.arange(1,10,2)) #开始 结束 步长
print(np.linspace(1,10,4)) #开始 结束 个数
print(np.logspace(1,4,4)) #分为4个等分点,形成数组【1,2,3,4】然后形成 对数的底数的指数
print(np.logspace(1,5,5,base=2)) #指定对数为2 #创建坐标系 其实可以用plt.show()
x=np.linspace(0,1,5)
y=np.linspace(0,1,3)
xv,yv=np.meshgrid(x,y)
print(xv)
print(yv)
plt.plot(xv,yv,'^')
plt.show() #指数图
x=np.arange(-5,5,0.1)
y=np.power(2,x)
#print(y)
plt.plot(x,y)
#对数图
x=np.power(2,x)
y=np.log2(x)
plt.plot(x,y)
plt.show() x1=np.arange(1,5,1)
y1=np.power(x1,3) #x1的3次方
print(y1) x2=np.array([1,8,27,64])
y2=np.power(x2,1/3) #x2的1/3次方
print(y2)

2.数组的复制等各种操作

import numpy as np

#1  赋值 改变原数组
a=np.array([1,2,3,4,5])
b=a
b[0]=100
print(b)
print(a) #2 拷贝 不改变原数组
a1=np.array([1,2,3,4,5])
b1=np.copy(a1)
b1[0]=20
print(a1)
print(b1) #3 修改
arry=np.array([1,2,3,4,5])
#arry[2]=10
arry[0:2]=8 #包头不包尾
print(arry) arr1=np.array([[1,2,3,4],[5,6,7,8]])
print(arr1.T) #数组的转置
arr1.shape=4,2
print(arr1) #简单分隔 #4 分隔
arr2=np.arange(0,20,1)
print(arr2.reshape(4,5))
newarr2=arr2.reshape(4,5)
newarr2[0:2,0]=8 #0行1行 的0列 为8
print(newarr2) #
newarr3=np.reshape(newarr2,(1,-1)) #行数为1, 列数 待定
print(newarr3)
newarr4=np.reshape(newarr2,(-1,1)) #列数为1, 行数 待定
print(newarr4) newarr5=newarr3[0][:,np.newaxis] #取第一行 即一维数组 在变成一列
print(newarr5) #6 二维数组转一维数组
arr2d=np.arange(1,21,1).reshape(4,5) #4行5列
print(arr2d)
arr2d1=np.ravel(arr2d)
print(arr2d1) #arr2d1和arr2d共享同一块内存
print(arr2d.flatten()) #不共享内存 #7 resize使用
arrresize=np.resize(arr2d,(5,2)) #5行2列 本来有20个元素 只取其中的10个也可以 不像reshape必须全取
print(arrresize) #8 转置 多维转换置换
arr3d=np.arange(1,28,1).reshape(3,3,3)
print(arr3d)
arr3d1=np.transpose(arr3d)
print(arr3d1)

3.数组的修改等各种操作

import numpy as np

#1.访问二维数组
a=np.arange(1,16,1).reshape(3,5) #3行5列数组
print(a)
print(a[1]) #访问第一行
print(a[1,1]) #访问第一行第一列的元素
print(a[1][1]) #访问第一行第一列的元素 #2.访问二维数组部分元素
print('-'*20)
b=np.arange(1,16,1).reshape(3,5) #3行5列二维数组
print(b)
print(b[0:1,2:4]) #第一行下标为2和下标为3的元素
print(b[:,3]) #所有行下标为3的列数的所有元素
print(b[:,2:5]) #所有行,2,3,4列元素 #3.删除元素
print('-'*20)
c=np.arange(1,16,1).reshape(3,5) #3行5列二维数组
print(c)
print(np.delete(c,1)) #删除行号 返回一位数组
print(np.delete(c,[2,3,8,9])) #返回一位数组 删除下标为2,3,8,9的元素 #4.删除列元素
print('-'*20)
d=np.arange(1,16,1).reshape(3,5) #3行5列二维数组
print(d)
print(np.delete(d,1,axis=0)) #删除下标为1这一行
print(np.delete(d,[2,3],axis=1)) #删除下标为2和3 的这两列 #5.插入元素
print('-'*20)
e=np.array([[1,2],[3,4],[5,6]])
print(e)
print(np.insert(e,1,5)) #返回一维数组 把5插入到1号索引后
print(np.insert(e,1,5,axis=1)) #插入一列 该列元素全为5
print(np.insert(e,1,[0,2,5],axis=1)) #插入一列 为0,2,5
print(np.insert(e,len(e),[[7,8]],axis=0)) #在最后一列插入一行
print(np.c_[e,np.array([1,1,1])]) #在最后一行后面加一列
print(np.append(e,[[7,8]],axis=0)) #append追加一列

4.数组的组合拼接等等

import numpy as np

#1.数组的行拼接
a=np.array([[1,2],[3,4]])
b=np.array([[5,6]])
c=np.concatenate((a,b),axis=0) #axis=0 按行
d=np.vstack((a,b)) #行 方法
print(c)
print(d) #2.数组的列拼接
a=np.array([[1,2],[3,4]])
b=np.array([[5],[6]])
c=np.concatenate((a,b),axis=1) #axis=1 按列 要求具有同样的列数
d=np.hstack((a,b)) #列方法
print(c)
print(d) #3.竖直方向将二维数组拆分成若干个数组
a=np.arange(1,21,1).reshape(4,5)
b=np.split(a,2)
c=np.vsplit(a,2)
print(b)
print(c) #4.水平方向将二维数组拆分成若干个数组
a=np.arange(1,21,1).reshape(4,5)
b=np.hsplit(a,5)
print(b)

5.数组的查找,排序,统计

import numpy as np

#1.检查符合条件的元素
a=np.array([1,0,0,3,4,5,0,8])
b=np.nonzero(a)
print(b) #不为0的下标
c=a[b]
print(c) #输出不为0的元素 1,3,4,5,8 #2.二维数组查找
a=np.array([[1,2,0],[4,0,6],[0,8,9]])
b=np.nonzero(a)
c=a[b]
print(c) #输出一维数组1,2,4,6,8,9 #3.查找指定条件
a=np.arange(10)
print(a)
b=np.where(a>5)
print(a[b]) #查找大于5的 #4.返回条件为true
a=np.arange(5)
b=np.array([True,False,True,True,False])
print(a[b]) #输出0,2,3
print(b[a]) #5.返回指定索引的若干个元素
a=np.array([4,3,5,7,6,8])
b=np.take(a,[0,1,4]) #返回索引为0,1,4的元素
print(b) #5.数组排序
a=np.arange(5)
print(a[::-1]) #倒序,,-1指定步长为-1 倒数
b=np.array([3,4,1,8,4,9,5,6,9])
print(np.sort(b)) #一维数组排序 a=np.array([[3,1,5],[2,4,0]])
print(a)
b=np.sort(a,axis=0) #沿着行索引增加方向排序,也就是对每一列排序
print(b)
c=np.sort(a,axis=1) #沿着列索引增加方向排序,也就是对每一行排序
print(c) #5.分界线排序
a=np.array([30,20,40,50,10,80,50,40,90,76])
b=np.partition(a,0)
print(b) #小于30的在左边 大于30的在右边 等于也在右边
c=np.partition(a,6)
print(c) #小于50的在左边 大于50的在右边 等于也在右边 #6.数组统计
a=np.array([1,3,6,2,5,9,8,10,4])
print(a.max()) #最大值
print(np.max(a)) #最大值
print(np.min(a)) #最小值 a=np.arange(1,11,1).reshape(2,5) #2行5列2维数组
print(a)
print(np.max(a)) #所有元素里面的最大值
print(np.max(a,axis=0)) #行索引 找出每一列的最大值
print(np.max(a,axis=1)) #列索引 找出每一行的最大值 a=np.array([[1,3,9],[2,5,4],[6,7,8]])
print('-'*20)
print(np.max(a,axis=0)) #行索引 找出每一列的最大值
print(np.max(a,axis=1)) #列索引 找出每一行的最大值 #查找极值元素的索引
a=np.array([1,2,0,4,5,3,7,9])
print(np.argmax(a)) #索引号 7
print(np.argmin(a)) #索引号 2 a=np.array([[1,2,3],[6,5,4],[9,7,8]]) #3行3列
print(a)
print(np.argmax(a))
print(np.argmax(a,axis=0)) #每一列最大元素的索引
print(np.argmax(a,axis=1)) #每一行最大元素的索引 #计算数组平均值
a=np.arange(1,13,1).reshape(3,4)
print(a)
print(np.mean(a)) #输出 所有数的和的平均值
print(np.mean(a,axis=0)) #每一列的平均值
print(np.mean(a,axis=1)) #每一行的平均值 #计算数组加权平均值
a=np.arange(1,11)
print(a) #输出1-11的十个数
print(np.mean(a)) #没加权重
b=np.average(a,weights=np.array([1,3,1,0,0,1,1,0,1,2])) #这是加了权重
print(b)

附上GitHub地址:

https://github.com/tyutltf/numpy_array_basic

numpy数组用法大全的更多相关文章

  1. numpy学习笔记 - numpy数组的常见用法

    # -*- coding: utf-8 -*- """ 主要记录代码,相关说明采用注释形势,供日常总结.查阅使用,不定时更新. Created on Mon Aug 20 ...

  2. 操作 numpy 数组的常用函数

    操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...

  3. pandas用法大全

    pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd12 2. ...

  4. NumPy 超详细教程(1):NumPy 数组

    系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...

  5. 转帖: 一份超全超详细的 ADB 用法大全

    增加一句 连接 网易mumu模拟器的方法 adb  connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...

  6. python之pandas用法大全

    python之pandas用法大全 更新时间:2018年03月13日 15:02:28 投稿:wdc 我要评论 本文讲解了python的pandas基本用法,大家可以参考下 一.生成数据表1.首先导入 ...

  7. JavaScript数组方法大全(推荐)

    原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...

  8. Numpy 数组操作

    Numpy 数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resh ...

  9. Python3 pandas用法大全

    Python3 pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as ...

随机推荐

  1. import模块后查找模块的绝对路径

    >>> import bsddb3>>> bsddb3.__file__'/usr/local/lib/python2.6/site-packages/bsddb3 ...

  2. js原形对象

    function clock(hour,minute,second){ this.constructor = clock ;//默认实现 /**/ } clock.prototype={ constr ...

  3. Java应用程序

    示例: public class HelloWorld { public static void main(String[] args) { System.out.println("Hell ...

  4. Facet constraits error: Spring 4.1 requires Java 1.6 or newer.

    问题来源: 在高版本的myeclipse,同步低版本的myeclipse提交的项目,可能会出现配置不一致. 问题描述: spring4.1不支持jdk1.6 注:在下载项目到本地的时候,myeclip ...

  5. June 15th 2017 Week 24th Thursday

    Whatever is worth doing is worth doing well. 任何值得做的,就把它做好. Whatever is worth doing is worth doing we ...

  6. 描边时消除锯齿SetSmoothingMode

    SmoothingModeAntiAlias 指定消除锯齿的呈现. SmoothingModeDefault 指定默认模式. SmoothingModeHighQuality 指定高质量.低速度呈现. ...

  7. Java传引用问题

            Java传引用问题  使用Java调用方法时,可以传值,也可以传引用.下面说说两者的区别: 1.传值 传值中的"值"类型是指java的8大基本类型(基础知识,不知道 ...

  8. position中需要注意的地方

    relative是相对元素本身位置进行移位,但不会改变本身位置的大小 本身的位置 移位后,可以看到,p5的位置还是在那,并不会自动往上走,也就是p2的位置原来所占据的位置不变的.不会因为偏移而改变布局 ...

  9. java 线程状态图

  10. CONVERT函数----SQL

    CONVERT函数是把时间转换成新类型的通用格式,这样方便查询 CONVERT(type,expression,style) type: 例如:varchar(10)  数据库字符串的类型,大小可以自 ...