1. import numpy as np;
  1. #创建数组的四种办法
  2. ##可以传入任何类数组
  3. a = np.array([0,1,2,3,4]);
  4. b = np.array((0,1,2,3,4));
  5. c = np.arange(5);
  6. d = np.linspace(0,2*np.pi,5);
  7. print(a);
  8. print(b);
  9. print(c);
  10. print(d);
  1. [0 1 2 3 4]
  2. [0 1 2 3 4]
  3. [0 1 2 3 4]
  4. [0. 1.57079633 3.14159265 4.71238898 6.28318531]
  1. #创建二维数组
  2. a = np.array([[11, 12, 13, 14, 15],
  3. [16, 17, 18, 19, 20],
  4. [21, 22, 23, 24, 25],
  5. [26, 27, 28 ,29, 30],
  6. [31, 32, 33, 34, 35]]);
  7. print(a);
  1. [[11 12 13 14 15]
  2. [16 17 18 19 20]
  3. [21 22 23 24 25]
  4. [26 27 28 29 30]
  5. [31 32 33 34 35]]
  1. #多维数组的切片
  2. print(a[0,1:4]);
  3. print(a[1:4,0]);
  4. print(a[:,1]);
  5. ##骚操作 用法:起始索引:结束索引:步长(不包括结束索引)
  6. print(a[1:4:1,0:5:2]);
  1. [12 13 14]
  2. [16 21 26]
  3. [12 17 22 27 32]
  4. [[16 18 20]
  5. [21 23 25]
  6. [26 28 30]]
  1. #多维数组的属性
  2. print(a);
  3. print(type(a));
  4. print(a.dtype);
  5. print(a.size);
  6. print(a.shape);
  7. print('-------------')
  8. print(a.itemsize);#每个元素所占的字节数
  9. print(a.ndim);#数组的维数
  10. print(a.nbytes);#数组中的所有数据消耗掉的字节数。你应该注意到,这并不计算数组的开销,因此数组占用的实际空间将稍微大一点
  1. [[11 12 13 14 15]
  2. [16 17 18 19 20]
  3. [21 22 23 24 25]
  4. [26 27 28 29 30]
  5. [31 32 33 34 35]]
  6. <class 'numpy.ndarray'>
  7. int32
  8. 25
  9. (5, 5)
  10. -------------
  11. 4
  12. 2
  13. 100
  1. #多维数组的运算
  2. a = np.arange(25)
  3. a = a.reshape((5, 5))
  4. b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45,
  5. 4, 92, 5, 55, 63, 43, 35, 6, 53, 24,
  6. 56, 3, 56, 44, 78])
  7. b = b.reshape((5,5))
  8. #两个数组做比较是是数组中每个元素依次比较,要求两个矩阵维度一致
  9. print(a < b)
  10. print(a > b)
  11. print('----------------------------------');
  12. print(a[a<b]);
  13. print('----------------------------------');
  14. print(a.dot(b));
  1. [[ True True False True False]
  2. [ True True False False True]
  3. [False True False True True]
  4. [ True True False True True]
  5. [ True False True True True]]
  6. [[False False True False True]
  7. [False False True True False]
  8. [ True False True False False]
  9. [False False True False False]
  10. [False True False False False]]
  11. ----------------------------------
  12. [ 0 1 3 5 6 9 11 13 14 15 16 18 19 20 22 23 24]
  13. ----------------------------------
  14. [[ 417 380 254 446 555]
  15. [1262 1735 604 1281 1615]
  16. [2107 3090 954 2116 2675]
  17. [2952 4445 1304 2951 3735]
  18. [3797 5800 1654 3786 4795]]
  1. #另外一些常见的函数
  2. a = np.arange(10);
  3. print(a);
  4. print(a.sum());
  5. print(a.min());
  6. print(a.max());
  7. #累加函数
  8. print(a.cumsum());
  1. [0 1 2 3 4 5 6 7 8 9]
  2. 45
  3. 0
  4. 9
  5. [ 0 1 3 6 10 15 21 28 36 45]
  1. #花式索引
  2. ##检索特定的元素,类似多重赋值
  3. a = np.arange(0,100,10);
  4. indices = [1,5,-1];
  5. b = a[indices];
  6. print(a);
  7. print(b);
  8. print('-------------------------');
  9. a = np.ones((5,5));
  10. a[0,0] = 5;
  11. a[2,0] = 2;
  12. print(a);
  13. indices = [0,2,3];
  14. b = a[indices];
  15. print(b);
  1. [ 0 10 20 30 40 50 60 70 80 90]
  2. [10 50 90]
  3. -------------------------
  4. [[5. 1. 1. 1. 1.]
  5. [1. 1. 1. 1. 1.]
  6. [2. 1. 1. 1. 1.]
  7. [1. 1. 1. 1. 1.]
  8. [1. 1. 1. 1. 1.]]
  9. [[5. 1. 1. 1. 1.]
  10. [2. 1. 1. 1. 1.]
  11. [1. 1. 1. 1. 1.]]
  1. #布尔屏蔽
  2. import matplotlib.pyplot as plt;
  3. a = np.linspace(0, 2 * np.pi, 50);
  4. b = np.sin(a);
  5. plt.plot(a,b);
  6. mask = b >= 0;
  7. plt.plot(a[mask], b[mask], 'bo');
  8. mask = (b >= 0) & (a <= np.pi / 2);
  9. plt.plot(a[mask], b[mask], 'go');
  10. plt.show();

  1. #缺省索引
  2. # Incomplete Indexing
  3. a = np.arange(0, 100, 10)
  4. b = a[:5] # [0:5]
  5. print(a>=50);
  6. c = a[a >= 50]
  7. print(b) # >>>[ 0 10 20 30 40]
  8. print(c) # >>>[50 60 70 80 90]
  1. [False False False False False True True True True True]
  2. [ 0 10 20 30 40]
  3. [50 60 70 80 90]
  1. #Where 函数
  2. a = np.arange(0,100,10);
  3. print(a[a>=50]);
  4. print(np.where(a < 50));
  5. print(np.where(a < 50)[0]);
  1. [50 60 70 80 90]
  2. (array([0, 1, 2, 3, 4], dtype=int64),)
  3. [0 1 2 3 4]

Python学习之路:NumPy进阶的更多相关文章

  1. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  2. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  3. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

  4. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  5. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  6. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  7. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  8. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴....

  9. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

  10. Python学习之路——pycharm的第一个项目

    Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...

随机推荐

  1. SQL Server错误处理

    一.SQLServer数据库引擎错误 1.查询系统错误信息 SQLServer在每个数据库的系统视图sys.messages中存储系统自定义(Message_id <= 50000)和用户自定义 ...

  2. MySQL知识总结(四)二进制日志

    1 定义 bin-log日志记录了所有的DDL和DML的语句,但不包括查询的语句,语句以事件的方式保存,描述了数据的更改过程,此日志对发生灾难时数据恢复起到了极为重要的作用. 2 开启 mysql默认 ...

  3. Apache服务器下使用 ab 命令进行压力测试

    ab是Apache超文本传输协议(HTTP)的性能测试工具. 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 ...

  4. BZOJ1029:[JSOI2007]建筑抢修(贪心,堆)

    Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的 入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快 ...

  5. 4199. [NOI2015]品酒大会【后缀数组+并查集】

    Description 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加.在大会的晚餐上,调酒师 ...

  6. 1059. [ZJOI2007]矩阵游戏【二分图】

    Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行 ...

  7. virtualbox+vagrant学习-2(command cli)-14-vagrant reload命令

    Reload 格式: vagrant reload [vm-name] 其等价于在运行vagrant up命令后接着运行vagrant halt 要使在Vagrantfile文件中所做的更改生效,通常 ...

  8. 多线程之Timer和TimerTask

    Timer是一种线程设施,用于安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask.TimerTask是一个抽象类,实现了Runnabl ...

  9. Linux搜索查找命令

    Linux搜索查找指令 find,用于在文件树中查找文件并作相应的处理 -name:按照文件名查找文件 -perm:按照文件权限查找文件 -user:按照文件属主来查找文件 -size:按照指定的文件 ...

  10. CANopen个人之所见,所想

    一直想写一篇关于CANopen的文章,鉴于个人知识能力没有动笔,今天做了一番思想斗争,斗胆发表一下自己对CANOPEN的肤浅认识. 计划从销售人员,技术人员角度都分析一下CANopen的优势,文章可能 ...