Gluon学习03-基础数据类型Ndarray

小书匠 kindle 

目录,方便快速定位:


本机环境介绍:

系统:Linuxmint

Python版本:Python3


1.API介绍

MxNet版本:1.2.0

API地址:https://mxnet.incubator.apache.org/api/python/ndarray/ndarray.html

Ndarray在CPU/GPU上提供必要的张量操作,是一个多维的,固定大小的,同类型的矩阵.mxnet.ndarray与numpy.ndarray非常相似.

The NDArray class:

1.属性

shape/size/ndim/context/dtype

  1. import mxnet as mx 

  2. from mxnet import nd 

  3. import numpy as np 

  4. #数据的形状 

  5. >>> x = mx.nd.array([1, 2, 3, 4]) 

  6. >>> x.shape 

  7. (4L,) 

  8. >>> y = mx.nd.zeros((2, 3, 4)) 

  9. >>> y.shape 

  10. (2L, 3L, 4L) 


  11. #数据的多少 

  12. >>> import numpy as np 

  13. >>> x = mx.nd.zeros((3, 5, 2)) 

  14. >>> x.size 

  15. 30 

  16. >>> np.prod(x.shape) 

  17. 30 


  18. #数据的阶/秩 

  19. >>> x = mx.nd.array([1, 2, 3, 4]) 

  20. >>> x.ndim 



  21. >>> x = mx.nd.array([[1, 2], [3, 4]]) 

  22. >>> x.ndim 




  23. #数据所在的设备 

  24. >>> x = mx.nd.array([1, 2, 3, 4]) 

  25. >>> x.context 

  26. cpu(0) 

  27. >>> type(x.context) 


  28. >>> y = mx.nd.zeros((2,3), mx.gpu(0)) 

  29. >>> y.context 

  30. gpu(0) 


  31. #数据的类型 

  32. >>> x = mx.nd.zeros((2,3)) 

  33. >>> x.dtype 


  34. >>> y = mx.nd.zeros((2,3), dtype='int32') 

  35. >>> y.dtype 

2.转换

  1. #转为标量,形状必须是(1,) 

  2. >>> x = mx.nd.ones((1,), dtype='int32') 

  3. >>> x.asscalar() 



  4. >>> type(x.asscalar()) 


  5. #复制 

  6. >>> x = mx.nd.ones((2,3)) 

  7. >>> y = x.copy() 

  8. >>> y.asnumpy() 

  9. array([[ 1., 1., 1.], 

  10. [ 1., 1., 1.]], dtype=float32) 

3.创建

  1. #通过自身API创建 

  2. >>> a=nd.arange((10)) 

  3. >>> a 

  4. [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] 

  5. <NDArray 10 @cpu(0)> 


  6. >>> b=nd.zeros((2,3)) 

  7. >>> b 

  8. [[0. 0. 0.] 

  9. [0. 0. 0.]] 

  10. <NDArray 2x3 @cpu(0)> 


  11. >>> c=nd.ones((2,3,1)) 

  12. >>> c 

  13. [[[1.] 

  14. [1.] 

  15. [1.]] 

  16. [[1.] 

  17. [1.] 

  18. [1.]]] 

  19. <NDArray 2x3x1 @cpu(0)> 


  20. #通过list创建 

  21. >>> d=[6,5,4,3,2,1] 

  22. >>> e=nd.array(d) 

  23. >>> e 

  24. [6. 5. 4. 3. 2. 1.] 

  25. <NDArray 6 @cpu(0)> 

4.形状

  1. #转置 

  2. >>> x = mx.nd.arange(0,6).reshape((2,3)) 

  3. >>> x.asnumpy() 

  4. array([[ 0., 1., 2.], 

  5. [ 3., 4., 5.]], dtype=float32) 

  6. >>> x.T.asnumpy() 

  7. array([[ 0., 3.], 

  8. [ 1., 4.], 

  9. [ 2., 5.]], dtype=float32) 


  10. #改变形状 

  11. >>> x = mx.nd.arange(0,6).reshape(2,3) 

  12. >>> x 

  13. [[0. 1. 2.] 

  14. [3. 4. 5.]] 

  15. <NDArray 2x3 @cpu(0)> 


  16. >>> y = x.reshape(3,2) 

  17. >>> y 

  18. [[0. 1.] 

  19. [2. 3.] 

  20. [4. 5.]] 

  21. <NDArray 3x2 @cpu(0)> 


  22. #列多少不管,就明确是n行,列= (x.size/n)上整 

  23. >>> y = x.reshape(2,-1) 

  24. >>> y 

  25. [[0. 1. 2.] 

  26. [3. 4. 5.]] 

  27. <NDArray 2x3 @cpu(0)> 


  28. #只要一行 

  29. >>> y = x.reshape(-3) 

  30. >>> y 

  31. [0. 1. 2. 3. 4. 5.] 

  32. <NDArray 6 @cpu(0)> 

  33. >>>  


5.元素扩展

  1. #拼接,输入数组的唯独应该相同 

  2. x = [[1,1],[2,2]] 

  3. y = [[3,3],[4,4],[5,5]] 

  4. z = [[6,6], [7,7],[8,8]] 

  5. concat(x,y,z,dim=0) = [[ 1., 1.], 

  6. [ 2., 2.], 

  7. [ 3., 3.], 

  8. [ 4., 4.], 

  9. [ 5., 5.], 

  10. [ 6., 6.], 

  11. [ 7., 7.], 

  12. [ 8., 8.]] 

参考:

NDArray API

每日一学,争取进步03

Gluon学习03-基础数据类型Ndarray的更多相关文章

  1. Python基础学习Day7 基础数据类型的扩展 集合 深浅copy

    一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...

  2. Lua学习----Lua基础数据类型

    前言 Lua有6中数据类型,分别是nil(空).boolean(布尔).number(数字).string(字符).table(表).function(函数) 在Lua中可以使用type函数来返回一个 ...

  3. python学习03-数据类型

    一.基本数据类型--数字 布尔型 bool型只有两个值:True和False 之所以将bool值归类为数字,是因为我们也习惯用1表示True,0表示False. 以下是布尔值是False的各种情况: ...

  4. Scala - 快速学习03 - 基础语法

    1- 变量 变量 mutable variable 在程序运行过程中其值可能发生改变的量 关键词var定义变量,定义时直接进行求值 常量 immutable variable 在程序运行过程中其值不会 ...

  5. python 的基础 学习 第六天 基础数据类型的操作方法 字典

    1,字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且ke ...

  6. Python学习1 基础数据类型

    一.字符串                         1.去除首尾字符 str_test = 'Hello World!' str_test.split()#将字符串分割为列表str_test. ...

  7. 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张

    自从苹果宣布swift之后,我一直想了解,他一直没有能够把它的正式学习,从今天开始,我会用我的博客来驱动swift得知,据我们了解还快. 1.定义变量和常量 var  定义变量,let定义常量. 比如 ...

  8. python学习日记(基础数据类型及其方法02)

    python的变量 python中的变量不需要声明,变量载使用前必须被赋值,变量被赋值以后才会被创建. 在python中变量就是变量,没有数据类型.我们所说的类型是变量所指向内存中的对象的类型. py ...

  9. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

随机推荐

  1. fastjson<1.2.47 RCE 漏洞复现

    这两天爆出了 fastjson 的老洞,复现简单记录一下. 首先使用 spark 搭建一个简易的利用 fastjson 解析 json 的 http server. package cn.hackte ...

  2. 在微服务架构中service mesh是什么?

    在微服务架构中service mesh是什么 什么是 service mesh ? 微服务架构将软件功能隔离为多个独立的服务,这些服务可独立部署,高度可维护和可测试,并围绕特定业务功能进行组织. 这些 ...

  3. C++11 特性

    之前工作中开发/维护的模块大多都是 "远古代码",只能编译 C++98,很多 C++11 的特性都忘得差不多了,再回顾一下 右值引用&转移语义: 消除两个对象交互时不必要的 ...

  4. puppet工作原理之模块使用

    一.模块介绍 1.什么是模块 通常情况把manifest文件分解成易于理解得结构,例如类文件,配置文件分类存放,并通过某种机制整合使用,这种机制就是模块,有助于结构化.层次化的方式使用puppet,p ...

  5. 关于MQ的几件小事(五)如何保证消息按顺序执行

    1.为什么要保证顺序 消息队列中的若干消息如果是对同一个数据进行操作,这些操作具有前后的关系,必须要按前后的顺序执行,否则就会造成数据异常.举例: 比如通过mysql binlog进行两个数据库的数据 ...

  6. iOS - Scenekit3D引擎初探之 - 导入模型+上传服务器+下载并简单设置

    SceneKit是ios8之后苹果推出了一个3D模型渲染框架. SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过.这篇文章只针对.da ...

  7. MonkeyRunner——Mac

    1. MonkeyRunner介绍: Android的SDK中集成了三个可用来进行自动化测试的工具:Monkey.MonkeyRunner和Robotium.这三个测试工具都是基于黑盒测试. Monk ...

  8. UI5-技术篇-事务Tcode

    1.LPD_CUST 快速启动板概览 2./N/UI2/FLPD_CONF 创建目录与组(全部客户端) 3./N/UI2/FLPD_CUST 创建目录与组(当前客户端) 4./N/UI2/FLP 编辑 ...

  9. 通过DB13备份SystemDB

    配置systemdb capital user name:SYSTEM save -back Save 现在可以通过DB13备份SystemDB Done. Congratulations!

  10. SPI简述

    SPI是器件的比较常用的通信协议. SPI总共有四根线: SS:片选线,每个设备都和主机MCU有一条单独片选线相连,片选线拉低意味主机输出,也就是说一个主机可以和多个从机相连,只需要有足够多的片选线. ...