本文完整示例:完整示例代码

本文介绍了基础的、常用的创建ndarrary的多种方法,附带示例代码。

一、通过ndarray创建

  1. import numpy as np

1.1 一维数组

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

1.2 二维数组

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

1.3 三维数组

  1. arr1 = np.array([
  2. [
  3. [1, 2, 32, 23],
  4. [23, 3, 23, 3]
  5. ],
  6. [
  7. [1, 2, 3, 4],
  8. [23, 3, 4, 32]
  9. ]
  10. ])
  11. print(arr1)
  12. print(type(arr1))
  13. arr1
  1. [[[ 1 2 32 23]
  2. [23 3 23 3]]
  3. [[ 1 2 3 4]
  4. [23 3 4 32]]]
  5. <class 'numpy.ndarray'>
  6. array([[[ 1, 2, 32, 23],
  7. [23, 3, 23, 3]],
  8. [[ 1, 2, 3, 4],
  9. [23, 3, 4, 32]]])

二、创建ndarrary的常见函数

2. zeros()函数,指定一个维度元组(形状参数),返回全0的ndarrary

  1. arr2 = np.zeros((2, 4))
  2. arr2
  1. array([[ 0., 0., 0., 0.],
  2. [ 0., 0., 0., 0.]])

3. ones()函数,指定一个维度元组(形状参数),返回全1的ndarrary

  1. arr3 = np.ones((4, 4))
  2. arr3
  1. array([[ 1., 1., 1., 1.],
  2. [ 1., 1., 1., 1.],
  3. [ 1., 1., 1., 1.],
  4. [ 1., 1., 1., 1.]])

4. empty()函数,指定一个维度元组(形状参数),返回一个值(垃圾值)为被初始化的ndarrary

  1. arr4 = np.empty((2, 2))
  2. arr4
  1. array([[ 7.89119642e-312, 4.22795269e-307],
  2. [ 9.34608432e-307, 1.11258854e-306]])

三、其他创建ndarrary的方式

5. numpy.arange([start ], stop[, step ], dtype=None)函数,左开右闭

  1. arr5 = np.arange(1, 10, 1)
  2. arr5
  1. array([1, 2, 3, 4, 5, 6, 7, 8, 9])

6. numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)函数, 产生一个等差数列,左闭右闭

  1. arr6 = np.linspace(0, 4, 5)
  2. arr6
  1. array([ 0., 1., 2., 3., 4.])

7. numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)函数,底数默认为10

  1. arr7 = np.logspace(0, 4, 5, base=2)
  2. arr7
  1. array([ 1., 2., 4., 8., 16.])

8. numpy.eye(N, M=None, k=0, dtype=<type ‘float’>)函数,生成NxM的单位矩阵

Return a 2-D array with ones on the diagonal and zeros elsewhere.

  1. arr8 = np.eye(4, 3)
  2. arr8
  1. array([[ 1., 0., 0.],
  2. [ 0., 1., 0.],
  3. [ 0., 0., 1.],
  4. [ 0., 0., 0.]])

9. numpy.zeros_like(a, dtype=None, order=’K’, subok=True)函数,返回一个与a的形状参数一样的元素全部为0的数组

Return an array of zeros with the same shape and type as a given array.

参数subok,是否继承a的数据类型;

参数order,指定返回的结果在内存中的存储布局,默认是'K',表示尽可能与a相同。

  1. # 返回一个与arr8形状应的全0数组
  2. arr9 = np.zeros_like(arr8)
  3. arr9
  1. array([[ 0., 0., 0.],
  2. [ 0., 0., 0.],
  3. [ 0., 0., 0.],
  4. [ 0., 0., 0.]])

10. numpy.ones_like(a, dtype=None, order=’K’, subok=True)函数,

返回一个与a的形状参数一样且元素全为0的数组

  1. # 返回一个与ar9形状应的全0数组
  2. arr10 = np.ones_like(arr9)
  3. arr10
  1. array([[ 1., 1., 1.],
  2. [ 1., 1., 1.],
  3. [ 1., 1., 1.],
  4. [ 1., 1., 1.]])

11. numpy.empty_like(a, dtype=None, order=’K’, subok=True)函数,返回一个与a形状相同且全部值为垃圾值(随机值)的数组

Return a new array with the same shape and type as a given array.

  1. arr11 = np.empty_like(np.ones((5,4)))
  2. arr11
  1. array([[ 7.89102294e-312, 6.27463370e-322, 0.00000000e+000,
  2. 0.00000000e+000],
  3. [ 8.45593933e-307, 5.30276956e+180, 7.70748458e-043,
  4. 4.57487963e-071],
  5. [ 3.45618033e-086, 3.35860426e-143, 6.01433264e+175,
  6. 6.93885958e+218],
  7. [ 5.56218858e+180, 3.94356143e+180, 4.75084178e-037,
  8. 1.24689504e-047],
  9. [ 3.85156077e-057, 2.06073242e+184, 4.71530148e-143,
  10. 1.50008929e+248]])

12. numpy.copy(a, order=’K’)函数,返回与a一样的数组

Return an array copy of the given object.

  1. # 属于深拷贝,修改复制数组,对原数组没有影响
  2. arr12 = np.copy(arr11)
  3. arr12[0, 0] = 1
  4. arr12
  1. array([[ 1.00000000e+000, 6.27463370e-322, 0.00000000e+000,
  2. 0.00000000e+000],
  3. [ 8.45593933e-307, 5.30276956e+180, 7.70748458e-043,
  4. 4.57487963e-071],
  5. [ 3.45618033e-086, 3.35860426e-143, 6.01433264e+175,
  6. 6.93885958e+218],
  7. [ 5.56218858e+180, 3.94356143e+180, 4.75084178e-037,
  8. 1.24689504e-047],
  9. [ 3.85156077e-057, 2.06073242e+184, 4.71530148e-143,
  10. 1.50008929e+248]])

13. numpy.identity(n, dtype=None)函数,返回一个n阶单位方阵

Return the identity array.

  1. arr13 = np.identity(4)
  2. arr13
  1. array([[ 1., 0., 0., 0.],
  2. [ 0., 1., 0., 0.],
  3. [ 0., 0., 1., 0.],
  4. [ 0., 0., 0., 1.]])

14. numpy.fromfunction(function, shape, **kwargs)返回一个数组,元素的值由函数计算,形状由shape元组限制

注意:参数shape是一个元组,shape元组中的元素个数需要与函数中的参数个数一致,分别表示不同纬度。

  1. arr20 = np.fromfunction(lambda x, y: x+y, shape=(3, 3))
  2. print(arr20)
  3. arr21 = np.fromfunction(lambda x, y, z: x+y+z, shape=(3, 3, 3))
  4. arr21
  1. [[ 0. 1. 2.]
  2. [ 1. 2. 3.]
  3. [ 2. 3. 4.]]
  4. array([[[ 0., 1., 2.],
  5. [ 1., 2., 3.],
  6. [ 2., 3., 4.]],
  7. [[ 1., 2., 3.],
  8. [ 2., 3., 4.],
  9. [ 3., 4., 5.]],
  10. [[ 2., 3., 4.],
  11. [ 3., 4., 5.],
  12. [ 4., 5., 6.]]])

15. numpy.mgrid函数

  1. arr14 = np.mgrid[-1:3:2] # 表示从-1开始,步长为1,取2个数字
  2. print(arr14)
  3. arr15 = np.mgrid[-1:3:2j] # 当加'j'时,表示左闭右闭,且取到2个数字
  4. print(arr15)
  5. arr16 = np.mgrid[-1:3] # 当指定两个参数时,功能与numpy.arange()函数一样
  6. print(arr16)
  7. arr18 = np.mgrid[0:5, 0:5] # 分别在两个维度上做填充
  8. print(arr18)
  1. [-1 1]
  2. [-1. 3.]
  3. [-1 0 1 2]
  4. [[[0 0 0 0 0]
  5. [1 1 1 1 1]
  6. [2 2 2 2 2]
  7. [3 3 3 3 3]
  8. [4 4 4 4 4]]
  9. [[0 1 2 3 4]
  10. [0 1 2 3 4]
  11. [0 1 2 3 4]
  12. [0 1 2 3 4]
  13. [0 1 2 3 4]]]

16. numpy.ogrid函数

  1. arr19 = np.ogrid[1:2]
  2. print(arr19)
  3. arr20 = np.ogrid[0:5, 0:5]
  4. print(arr20)
  1. [1]
  2. [array([[0],
  3. [1],
  4. [2],
  5. [3],
  6. [4]]), array([[0, 1, 2, 3, 4]])]

17. numpy.fromstring(string, dtype=float, count=-1, sep=’‘)函数,从字符串创建一个一维ndarrary

  1. arr21 = np.fromstring('1 2 3 4', sep=' ')
  2. arr21
  1. array([ 1., 2., 3., 4.])

18. numpy.fromiter(iterable, dtype, count=-1)函数,返回一个一维数组

  1. # 需要指定数据类型dtype
  2. iterable = (i*i for i in range(4))
  3. arr22 = np.fromiter(iterable,dtype=float)
  4. arr22
  1. array([ 0., 1., 4., 9.])

四、其他方法

19. numpy.fromfile(file, dtype=float, count=-1, sep=’‘)函数,从文本文件或二进制文件中创建ndarrary

20. numpy.loadtxt(fname, dtype=<type ‘float’>, comments=’#’, delimiter=None, converters=None,skiprows=0, usecols=None, unpack=False, ndmin=0)从文件中创建。

总结
  1. 本文完整示例:完整示例代码
  2. 能力有限,欢迎指错交流;

欢迎关注个人微信公众号WaltSmithML或新浪微博WaltSmith,公众号提供机器学习、深度学习、Hadoop、Spark、Python、数学知识等免费视频教程。本人主要方向为机器学习和深度学习。非常欢迎一起交流学习哈,除了学习,还可免费帮忙download论文或者书籍哈==============

♥♥♥微信公众号♥♥♥♥♥♥♥♥♥新浪微博♥♥

Python中创建ndarrary的20中方法的更多相关文章

  1. HTML 5 应用程序缓存(Application Cache)cache manifest 文件使用 html5 中创建manifest缓存以及更新方法 一个manifest文件会创建一份缓存,不同的manifest文件其缓存的内容是互不干扰的

    HTML5 离线缓存-manifest简介 HTML 5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(A ...

  2. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  3. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...

  4. cocos2dx中创建动画的三种方法

    1.最最原始的方法,先创建动画帧,再创建动画打包(animation),再创建动画(animate) 第一步: 创建动画帧:CCSpriteFrame,依赖于原始的资源图片(xx.png,xx.jpg ...

  5. 在Microsoft Power BI中创建地图的10种方法

    今天,我们来简单聊一聊“地图”. 在我们日常生活中,地图地位已经提升的越来越高,出门聚餐.驾驶.坐车.旅行......应运而生的就是各种Map APP. 作为数据分析师,我们今天不讲生活地图,要跟大家 ...

  6. java中创建线程的几种方法及区别

    1,实现Runnable接口创建线程 特点: A:将代码和数据分开,形成清晰的模型 B:线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法 C:有利于保持程序风格的一致性 2,继承Th ...

  7. Java中创建线程的三种方法以及区别

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...

  8. java中创建线程的3种方法

    1.继承Thread类优点:可以直接使用Thread类中的方法,代码比较简单.缺点:继承Thread类之后不能继承其他类. 2.实现Runable接口优点:实现接口,比影响继承其他类或实现接口.缺点: ...

  9. PowerPoint 2013中创建自定义路径动画的方法

    1.在幻灯片中选择对象,在“动画”选项卡的“高级动画”组中单击“添加动画”按钮,在打开的下拉列表中选择“自定义路径”选项,如图1所示. 图1 选择“自定义路径”选项 2.此时鼠标指针变为十字形,在幻灯 ...

随机推荐

  1. Xilinx ISE 14.1利用Verilog产生clock

    <一>建立如下的Verilog Module module myClock( input clock ); endmodule <二>建立 Verilog Test Fixtu ...

  2. 哈尔滨理工大学第六届程序设计团队 H-Permutation

    /* 数学是硬伤......推了半小时推出来一个错误的公式 */ #include <iostream> #include <stdio.h> #include <alg ...

  3. CentOS7配置更新国内yum源

    备份本地yum源文件 cd /etc/yum.repo.d/ mv CentOS-Base.repo CentOS-Base.repo.bakeup 下载国内yum源 阿里云yum源 wget htt ...

  4. Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案

    Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误:Description Resource Path Location TypeDynamic Web Module 3.0 r ...

  5. centos6.5安装rabbitmq3.6.14

    The minimum version of Erlang/OTP required to run RabbitMQ server 3.6.0 through 3.6.14 is R16B03. St ...

  6. 《天书夜读:从汇编语言到windows内核编程》九 时间与定时器

    1)使用如下自定义函数获取自系统启动后经历的毫秒数:KeQueryTimeIncrement.KeQueryTickCount void MyGetTickCount(PULONG msec) { L ...

  7. [转]Oracle 索引质量分析

    http://blog.csdn.net/leshami/article/details/23687137 索引质量的高低对数据库整体性能有着直接的影响.良好高质量的索引使得数据库性能得以数量级别的提 ...

  8. C#设计模式之十五命令模式(Command Pattern)【行为型】

    一.引言   今天我们开始讲"行为型"设计模式的第二个模式,该模式是[命令模式],又称为行动(Action)模式或交易(Transaction)模式,英文名称是:Command P ...

  9. 如何实现 Service 伸缩?- 每天5分钟玩转 Docker 容器技术(97)

    上一节部署了只有一个副本的 Service,不过对于 web 服务,我们通常会运行多个实例.这样可以负载均衡,同时也能提供高可用. swarm 要实现这个目标非常简单,增加 service 的副本数就 ...

  10. [最短路]P1462 通往奥格瑞玛的道路

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...