NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!

简单理解:

  2维是EXCEL表格里面的多行多列
  3维是EXCEL表格里面的多行多列+下面的sheet1、2、3
  4维是包括了同一个文件夹下不同名称的EXCEL表格
  5维是同一分区不同文件夹下不同名称的EXCEL表格
  6维是不同分区不同文件夹下不同名称的EXCEL表格

多维数组非常像列表,但通常它的元素类型是相同的,且都是数字,下面是一个简单的例子。

 声明数组:

  1. import numpy as np
  2.  
  3. a = np.array([1, 2, 3, 4, 5, 6])
  4.  
  5. print(f'一维数组: {a}')

结果:

  1. a = np.array([[1, 2, 3], [4, 5, 6]])
  2. print(f'二维数组: {a}')

结果: 

  1. # 使用reshape方法反向生成多维数组 三维数组
  2. nlist_3 = np.array(range(24)).reshape((3,2,4))
  3. print(nlist_3)

结果:

  1. #反向声明一个size为20个元素的四维数组
  2. nlist_4 = np.array(range(20)).reshape((1,2,5,2))
  3. print(nlist_4)

结果:

 数组操作:

  1. print(f'维度(axes or dimensions)): {a.ndim}')

结果:

  1. print(f'每个维度长度: {a.shape}')

结果:

  1. print(f'数组长度: {a.size}')

结果:

  1. print(f'数组类型: {type(a)}')

结果:

  1. print(f'数组元素类型: {a.dtype}')

结果:

  1. print(f'数组元素大小(bytes): {a.itemsize}')

结果:

  1. print(f'数组元素: {a.data}')

结果:

  1. #data属性,用来打印数据缓冲区 buffer
  2. print(a.data)
结果:

  1. #使用浮点作为元素类型
  2. nlist_flaot = np.array([1.0,2.0,3.0])
  3. print(nlist_flaot.dtype)

结果:

  1. #使用字符串作为元素类型
  1. nlist_string = np.array(['a','b','c'])
  2. print(nlist_string.dtype)

结果:

  1. #自动生成使用ones方法,自动生成元素为1的多维数组
  2. nlist_ones = np.ones((4,4))
  3. print(nlist_ones)
  4. print(nlist_ones.dtype)

结果:

  1. #使用zeros来生成元素为0的多维数组
  2. nlist_zeros = np.zeros((4,4))
  3. print(nlist_zeros)
  4. print(nlist_zeros.dtype)

结果:

  1. #使用empty方法来生成随机多维数组 使用第二个参数指定数据类型 不指定为float64
  2. nlist_empty = np.empty([2,2],dtype=np.int)
  3. print(nlist_empty)
  4. print(nlist_empty.dtype)

结果:

  1. #把普通list转换成数组
  2. x = [1,2,3]
  3. x = [[1,2,3],[4,5]]
  4. print(type(x))
  5. nlist = np.asarray(x)
  6. print(nlist)
  7. print(nlist.ndim)
  8. print(nlist.shape)
  9. print(type(nlist))

结果:

  1. #把普通list转换成数组 二维数组
  2. x = [1,2,3]
  3. x = [[1,2,3],[4,5,6]]
  4. print(type(x))
  5. nlist = np.asarray(x)
  6. print(nlist)
  7. print(nlist.ndim)
  8. print(nlist.shape)
  9. print(type(nlist))

结果:

  1. #frombuffer 通过字符串(buffer内存地址)切片来生成多维数组 b指定字节
  2. my_str = b'Hello Word'
  3. nlist_str = np.frombuffer(my_str,dtype='S1')
  4. print(nlist_str)

结果:

  1. x = np.array([[1,2],[3,4]])
  2. print(x)
  3.  
  4. #指定axis属性可以指定当前多维数组的维度 keepdims=True让其维度不变
  5. sum0 = np.sum(x,axis=0,keepdims=True)
  6. print(sum0)
  7. print('--------------')
  8. sum1 = np.sum(x,axis=1,keepdims=True)
  9. print(sum1)

结果:

  1. #多维数组赋值
  2. x = np.array([1,2])
  3. y = x.copy()
  4. y[0] = 3
  5. print(x)

结果:

  1. #维度级的运算
  2. a = np.array([[1,2],[3,4],[5,6]])
  3. b = np.array([[10,20],[30,40],[50,60]])
  4.  
  5. #vstack方法
  6. suma = np.vstack((a,b))
  7. print(suma)
  8.  
  9. #hstack方法
  10. sumb = np.hstack((a,b))
  11. print(sumb)

结果:

  1. #多维数组调用
  2. nlist = np.array([[1,2],[3,4],[5,6]])
  3. print(nlist[0])
  4. #取元素4
  5. print(nlist[1][1])
  6. #第二种写法
  7. print(nlist[1,1])
  8. nlist[2,1] = 7
  9. print(nlist)

结果:

  1. #删除方法 delete
  2. #删除nlist第二行
  3. print(np.delete(nlist,1,axis=0))
  4. print(np.delete(nlist,0,axis=1))

结果:

简单的计算及数组值交换操作

import numpy as np
q1 = np.zeros(shape=10)
#给第五个元素赋值
q1[4] = 1
# print(q1)
# 创建一个每一行都是0到4的5*5矩阵
q2_list = [0,1,2,3,4]
# 使用list乘法反推矩阵
q2 = np.array(q2_list * 5).reshape(5,5)
# print(q2)
q3 = np.array([[1,2,3],[4,5,6],[7,8,9]])
#使用所引交换元素
# 换行
q3 = q3[[2,1,0]]
q3 = q3[[2][0]]
print(q3)
#原数组为一维数组,内容为从 0 到 100,抽取出所有偶数。
q4 = np.array(range(101))
#判断偶数
q4 = q4[q4 % 2 == 0]
print(q4)
  1. import numpy as np
  2.  
  3. q1 = np.zeros(shape=10)
  4. #给第五个元素赋值
  5. q1[4] = 1
  6. # print(q1)
  7.  
  8. # 创建一个每一行都是0到4的5*5矩阵
  9. q2_list = [0,1,2,3,4]
  10. # 使用list乘法反推矩阵
  11. q2 = np.array(q2_list * 5).reshape(5,5)
  12. # print(q2)
  13.  
  14. q3 = np.array([[1,2,3],[4,5,6],[7,8,9]])
  15. #使用所引交换元素
  16. # 换行
  17. q3 = q3[[2,1,0]]print(q3)
  18.  
  19. #原数组为一维数组,内容为从 0 到 100,抽取出所有偶数。
  20. q4 = np.array(range(101))
  21. #判断偶数
  22. q4 = q4[q4 % 2 == 0]
  23. print(q4)

numpy 多维数组及数组操作的更多相关文章

  1. Numpy数组对象的操作-索引机制、切片和迭代方法

    前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...

  2. Numpy - 多维数组(上)

    一.实验说明 numpy 包为 Python 提供了高性能的向量,矩阵以及高阶数据结构.由于它们是由 C 和 Fortran 实现的,所以在操作向量与矩阵时性能非常优越. 1. 环境登录 无需密码自动 ...

  3. php对二维数组进行相关操作(排序、转换、去空白等)

    php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04   这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...

  4. Numpy数组的基本运算操作

    一.算术运算符 In [3]: a = np.arange(0,5) Out[3]array([0, 1, 2, 3, 4]) In [4]: a+4 Out[4]: array([4, 5, 6, ...

  5. numpy多维数组

    1 多维数组的切片用法 c = np.array([[[0,1,2],[4,5,6],[8,7,5],[10,11,12]],[[6,2,3],[9,8,34],[100,101,102],[110, ...

  6. 手把手numpy教程【二】——数组与切片

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Numpy专题的第二篇,我们来进入正题,来看看Numpy的运算. 上一篇文章当中曾经提到过,同样大小的数据,使用Numpy的运算速度会 ...

  7. Numpy数组基本操作(数组索引,数组切片以及数组的形状,数组的拼接与分裂)

    一:数组的属性 每个数组都有它的属性,可分为:ndim(数组的维度),shape(数组每个维度的大小),size(数组的总大小),dtype(数组数据的类型) 二:数组索引 和python列表一样,N ...

  8. poj 1195:Mobile phones(二维树状数组,矩阵求和)

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14489   Accepted: 6735 De ...

  9. Codeforces Round #198 (Div. 1) D. Iahub and Xors 二维树状数组*

    D. Iahub and Xors   Iahub does not like background stories, so he'll tell you exactly what this prob ...

随机推荐

  1. python爬虫之requests的基本使用

    简介 Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作. 一 ...

  2. web service 异常

    1.org/apache/commons/discovery/tools/DiscoverSingleton Exception in thread "main" java.lan ...

  3. CentOS7 网络NAT模式

    问题:安装完毕ping命令不能用,然后改为桥接模式,ping可以用. 先了解桥接,NAT 的含义. 桥接:在bridged模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访 ...

  4. 安装使用阿里云的yum源

    CentOS 1.备份(备份本地Yum源) mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.下 ...

  5. Java中的super()使用注意

    1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)3)super: 它引用当前对象的 ...

  6. springboot swagger2 泛型踩坑记

    最近使用一些工具需要和swagger打通,swagger的格式总是不对. 后来查了一下:哈哈. https://blog.csdn.net/hupingjin/article/details/8299 ...

  7. 51nod2383

    2383 高维部分和 1 秒 131,072 KB 80 分 5 级题   输入一个长度为n的数组a[i],下标从0开始(0到n-1)保证n是2的整数次幂,对于每个i (0 <= i < ...

  8. Nginx 反向代理如何连接上游服务器

    L:92 想上游服务器先建立TCP连接 如三次握手 下面指令可以控制握手时间 proxy_next_upstream  指令当出现502可以换个上游服务器 Tcp keepalive 一般都是由进程在 ...

  9. Codeforces Round #468 Div. 1

    D:首先考虑如果给定白棋位置,如何判断胜负.黑棋获胜需要四个方向都有能贴上白棋的棋子.由于每一轮都必须移动,显然先对平面黑白染色一下,只有与白棋所在格异色的黑棋才需要考虑.考虑让一个黑棋去贴上白棋某个 ...

  10. Codeforces 719A 月亮

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6395221.html A. Vitya in the Countryside time limit ...