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

简单理解:

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

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

 声明数组:

import numpy as np

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

print(f'一维数组: {a}')

结果:

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

结果: 

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

结果:

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

结果:

 数组操作:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

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

结果:

#删除方法 delete
#删除nlist第二行
print(np.delete(nlist,1,axis=0))
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)
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]]print(q3) #原数组为一维数组,内容为从 0 到 100,抽取出所有偶数。
q4 = np.array(range(101))
#判断偶数
q4 = q4[q4 % 2 == 0]
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. 在浏览器上安装 Vue Devtools工具

    Vue.js devtools是基于google chrome浏览器的一款调试vue.js应用的开发者浏览器扩展,可以在浏览器开发者工具下调试代码. 1)首先在github下载devtools源码,地 ...

  2. StringTokenizer

    StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数. 1.构造函数 public StringTokenizer(String str) public Str ...

  3. 防火墙禁ping:虚拟机ping不通主机,但主机可以ping虚拟机

    现象:刚装的centos6.6,配置好网络却发现ping不通主机,主机却ping通虚拟机: 解决方法: 1.最简单的方法就是:关闭防火墙.但一直关闭防火墙也不是个办法,会遇到很多安全问题,建议下一个方 ...

  4. Java多线程系列——原子类的实现(CAS算法)

    1.什么是CAS? CAS:Compare and Swap,即比较再交换. jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronou ...

  5. 关于IWMS后台登录问题总结

    一.登录后台,点击登录无反应: 1.是因为网站文件夹没有权限,需要右击文件夹,将只读勾选去掉 2.在安全中加入Everyone对象. 二.登录后台后,左边显示不全,是因为会员权限不够,需要给权限.

  6. Spring Boot基础:Spring Boot简介与快速搭建(1)

    1. Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建.运行.调试.部署等. Spring Boot默认使用tomca ...

  7. adoquery.refresh和adoquery.query的区别

    大的区别没有 1: requery是通过重新发出原始命令并再次检索数据,可使用 Requery 方法刷新来自数据源的 Recordset 对象的全部内容.调用该方法等于相继调用 Close 和 Ope ...

  8. .NET提供了三种后台输出js的方式:

    .NET提供了三种后台输出js的方式: 首先创建 js文件testjs.js {    Page.ClientScript.RegisterClientScriptInclude("keys ...

  9. poj2100(尺取法)

    题意:选取一系列数,使得这些数的平方和等于n: 解题思路:尺取法扫一遍: #include<iostream> #include<algorithm> using namesp ...

  10. node.js 运行机制与简单使用

    一.hello world 1.引入 required 模块 2.创建服务器 3.接收请求与响应请求 var http = require('http'); // 载入http模块 http.crea ...