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

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

    歌词来源:http://music.163.com/#/song?id=35437298 作曲 : 安英民 [作曲 : 安英民] 作词 : 安英民/로코 [作词 : 安英民/lo-Ko] 나를 떠나버 ...

  2. linux 用户和组及文件权限的相关内容

    1.添加用户(只有管理员用户或具有管理员权限的用户可以添加删除用户) useradd  用户名 (laoda)  新创建用户后home下会多一个laoda的目录 ,此目录中存放的是laoda用户相关的 ...

  3. Linux环境变量配置文件/etc/profile、/etc/bashrc、~/.bashrc的区别以及一些隐藏文件的作用

    ①/etc/profile: 该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行.也就是说这个文件对每个shell都有效,用于获取系统的环境信息. ②/etc/bashrc ...

  4. Java认证与授权服务JAAS基础概念

    转:http://www.nosqlnotes.com/technotes/jaas-concept/ JAAS是”Java Authentication and Authorization Serv ...

  5. flex使用学习

    1.指定容器为flex布局 display:flex 行内元素也可以使用Flex布局. display: inline-flex; 注意,设为Flex布局以后,子元素的float.clear和vert ...

  6. Lambda表达式学习(2)

    在. net3. 5里面 , 委托的定义和实现被大大的简化了!使用关键字Func或Action就可以定义一个委托 , 使用拉姆达表达式就可以实现一个具体的委托. Func关键字是用来定义一个有返回值的 ...

  7. sudo: java: command not found

    背景:搭建了jumpserver,给开发划分了所有权限,但是开发那边账户不能执行java命令 报错:sudo: java: command not found 解决方法: 在用户管理权限配置sudoe ...

  8. 知乎live考研数学冲刺135+资料分享

    前言 各位学弟学妹,您好,live中本来是给出了我的邮箱,通过邮箱来获取资料,但是没有想到,后来我每天打开邮箱,都是需要回复的邮件,少则一两封,多则四五封,每天如此,也是一个比较繁琐费时的方式.我决定 ...

  9. python logging模块日志回滚TimedRotatingFileHandler

    # coding=utf-8 import logging import time import os import logging.handlers import re def logger(app ...

  10. select * from * with ur

    DB2中,共有四种隔离级:RS,RR,CS,UR,DB2提供了这4种不同的保护级别来隔离数据.隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间.两个应用程序即使执行的相同的操作,也可 ...