文档章节

Numpy 基础

demonpro
 demonpro
发布于 2017/07/24 20:26
字数 1299
阅读 6
收藏 0
点赞 0
评论 0

 

 

1.生成numpy数组 

data = [[1, 3, 5, 7.0], [9, 11, 13, 15], [17, 19, 21, 23]] 
data = np.array(data)

[[ 1 3 5 7] 
[ 9 11 13 15] 
[17 19 21 23]]

data1 = array([[1, 3, 5, 7], [9, 11, 13, 15], [17, 19, 21, 23]])

创建数组时指定类型 
a1 = np.array([1, 2.3], dtype=float)

在从1到3中产生9个数,等差数列 
np.linspace(1, 3, 9)

生成首位是10的0次方,末位是10的2次方,含5个数,等比数列 
np.logspace(0, 2, 5)

根据矩阵的行号列号应用到func生成矩阵的元素 
def func(i, j): 
return i + j 
np.fromfunction(func, (5, 6)) 
[[ 0. 1. 2. 3. 4. 5.] 
[ 1. 2. 3. 4. 5. 6.] 
[ 2. 3. 4. 5. 6. 7.] 
[ 3. 4. 5. 6. 7. 8.] 
[ 4. 5. 6. 7. 8. 9.]]

随机数生成 
见附件8

np.random.normal(size=(4,4))

2.numpy数组基础函数 
data.shape:查看数组的行列属性

(3,4)

data.dtype:数组的数据类型

int32

data.ndim:数组的维度

2

np.zeros((3, 4)):生成全零二维数组

[[ 0. 0. 0. 0.] 
[ 0. 0. 0. 0.] 
[ 0. 0. 0. 0.]]

np.ones((2, 3)):生成全一二维数组

[[ 1. 1. 1.] 
[ 1. 1. 1.]]

np.empty((2, 2, 3)):生成空三维数组(里面有随机值)

[[[ 0. 0. 0.] 
[ 0. 0. 0.]]

np.arange(10):生成1到10的以为数组

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

np.eye(3):生成二维数组,单位向量

[[ 1. 0. 0.] 
[ 0. 1. 0.] 
[ 0. 0. 1.]]

np.identity(4):同上,生成二维数组,单位向量

[[ 1. 0. 0. 0.] 
[ 0. 1. 0. 0.] 
[ 0. 0. 1. 0.] 
[ 0. 0. 0. 1.]]

对数组中的数据类型进行转换,此时产生一个新的数组,而不是原数组的视图。 
数组中数据类型向下转型时可能会丢掉部分数据。 
numpy还可以将a数组的类型复制到b数组上。

a1 = a1.astype(‘c8’) 
b.astype(a.dtype)

3.切片 
切片得到的是数组的视图,改变切片的值,同时会改变数组的值。 
对于一位数组:

data1[2]:第三个数 
data1[5:8]:得到编号为5到7的数 
data1[5:8]=12:将编号为5到7的数都改为12 
data1[5:]:得到编号为5以及后面的数组成的数组

对于二维数组:

data2 = [[][]] 
data2[0]:拿到一个向量 
data2[0][2]:拿到第一个向量的第三个元素 
data2[0,2]:拿到第一个向量的第三个元素 
data2[:2,1:]: 
data2[:,:1] 
data2[1,2:] 
name!=”Bob”与-(name==”Bob”)相同 
在numpy中布尔条件使用&,|,不能用and和or 
data2[data2<0]=0:将小于0的都置为0 
通过布尔索引创建的数据总是创建数据的副本。

花式索引:

data = 
[[ 1. 0. 0. 0.] 
[ 0. 1. 0. 0.] 
[ 0. 0. 1. 0.] 
[ 0. 0. 0. 1.]]

data[[2,0]]:取第三行和第一行的数据 
[ [ 0. 0. 1. 0.] 
[ 1. 0. 0. 0.]]

data[[-3,-1]]:取倒数第三行和倒数第一行

data2 = 
[[ 0 1 2 3] 
[ 4 5 6 7] 
[ 8 9 10 11] 
[12 13 14 15] 
[16 17 18 19] 
[20 21 22 23] 
[24 25 26 27] 
[28 29 30 31]]

第一个参数是选取行数,第二个参数是从选取到的每一行中选对应的列 
print(data2[[1, 5, 7, 2], [0, 3, 1, 2]]) 
[ 4 23 29 10]

先选取行数,在把选取的行数按第二个参数进行列排列 
print(data2[[1, 5, 7, 2]][:, [0, 3, 1, 2]]) 
[[ 4 7 5 6] 
[20 23 21 22] 
[28 31 29 30] 
[ 8 11 9 10]]

同上,先选取行数,在把选取的行数按第二个参数进行列排列 
print(data2[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]) 
[[ 4 7 5 6] 
[20 23 21 22] 
[28 31 29 30] 
[ 8 11 9 10]]

4.变换

各种矩阵转置方法,都是返回数据的视图 
data.T 
data.transpose() 
data.transpose(1,0,2) 
data.swapaxes(1,0)

5.ufunc 
ufunc函数式将算法应用到每一个元素上

一元ufunc: 
见附录3

np.exp(data) 
np.modf(data)

二元ufunc: 
见附录4

np.maximum(x,y) 
np.copysign(x,y) 
data2 = array([[1, 3, 5, 7], [9, 11, 13, 15], [17, 19, 21, 23]]) 
data3 = array([[17, 19, 21, 23]]) 
data4 = array([[17, 19], [17, 19], [17, 19]]) 
纵向合并,将矩阵加到横轴,需要纵轴shape相等 
print(np.vstack((data2, data3))) 
print(np.concatenate((data2, data3), axis=0)) 
[[ 1 3 5 7] 
[ 9 11 13 15] 
[17 19 21 23] 
[17 19 21 23]] 
横向合并,将矩阵加到纵轴,需要横轴shape相等 
print(np.hstack((data2, data4))) 
print(np.concatenate((data2, data4), axis=1)) 
[[ 1 3 5 7 17 19] 
[ 9 11 13 15 17 19] 
[17 19 21 23 17 19]]

6.计算 
where函数:

如果满足cond条件,就取x中的元素,不然就取Y中的元素。 
np.where(cond,x,y)

统计方法: 
见附录5 
data.mean():求整个矩阵的均值 
np.mean(data) 
data.mean(axis=1):只求列的均值 
(data>0).sum():求矩阵中正值的个数

bools = np.array([False,False,True]) 
检查是否含有true 
bools.any() 
检查是否都为true 
bools.all()

排序 
data.sort() 
data.sort(1)

返回去重之后的数组 
data.unique(bools)

矩阵乘积 
data1.dot(data2) 
np.dot(data1,data2)

一个二维数组和一个大小合适的一维数组的矩阵点积运算后得到一个一维数组 
x = np.array([1,2,3],[4,5,6]) 
print(np.dot(x,np.one(3))) 
[6,15]

7.读取文件

np.read_csv() 
np.read_table() 
np.loadtxt(‘a.txt’,delimiter=’,’) 
np.savetxt()

附录 
附录1:数组创建函数

Alt text

附录2:numpy的数据类型

Alt text

Alt text

附录3:一元ufunc

Alt text

Alt text

附录4:二元ufunc

Alt text

附件5:基本数组统计方法

Alt text

Alt text

附件6:数组的集合运算

Alt text

附件7:常用的numpy.linalg函数

Alt text

附件8:部分numpy.random函数

Alt text

Alt text

© 著作权归作者所有

共有 人打赏支持
demonpro
粉丝 0
博文 1
码字总数 1299
作品 0
东城
入门 | 数据科学初学者必知的NumPy基础知识

  选自TowardsDataScience   作者:Ehi Aigiomawu   机器之心编译   参与:李诗萌、路      本文介绍了一些 NumPy 基础知识,适合数据科学初学者学习掌握。      NumPy(Num...

机器之心 ⋅ 04/21 ⋅ 0

小蛇学python(11)初窥numpy

今天我们来学学numpy这个库。重要性自不必说,直接切入主题。 numpy的数组创建方法 其中shape属性表现了这个数组的维度。 numpy还有一些自带的数组创建方法 读者可以自行输入,观看结果,享受...

Data_God ⋅ 05/26 ⋅ 0

Python机器学习、深度学习:快速、完全的Numpy入门指南

NumPy是python的第三方科学计算包,全名称为Numerical Python extensions。NumPy包含以下几个功能组件:强大的N维数组对象(可以操控多为数组),优美巧妙的功能(广播)函数,对于线性代数,...

oldpan ⋅ 2017/10/31 ⋅ 0

从零开始用Python3做数据分析

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书 ——异步小编 欢迎来到Python数据分析的世界!如今,Python已成为数据分析和数据...

异步社区 ⋅ 05/19 ⋅ 0

Python 机器学习基础(二)——Numpy 篇

本文是 Python 机器学习基础系列文章的第二篇——Numpy 篇。 Numpy Numpy 是 Python 的一种开源数值计算扩展包,它可以用于存储和处理大型矩阵,比 Python 自带的嵌套列表结构要高效得多。 ...

withchris ⋅ 05/23 ⋅ 0

新安装完 tensorflow 后import tensorflow as tf 报错

>>> import tensorflow as tf /opt/anaconda3/lib/python3.6/site-packages/h5py/init.py:36: FutureWarning: Conversion of the second argument of issubdtype from to is deprecated. In ......

yuri_cto ⋅ 06/02 ⋅ 0

Theano 中文文档 0.9 - 7.1.2 NumPy新手

7.1.2 NumPy新手 译者:Python 文档协作翻译小组,原文:NumPy refresher。 本文以 CC BY-NC-SA 4.0 协议发布,转载请保留作者署名和文章出处。 Python 文档协作翻译小组人手紧缺,有兴趣的朋...

apachecn_飞龙 ⋅ 2017/02/12 ⋅ 0

1.python数据分析与展示----Numpy

1.数据的维度 一维数据:一维数据由对等关系的有序或无序数据构成,采用线性方式组织,如: 3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376 对应列表、数组和集合等概念 列表和数组的区别:...

bxg1065283526 ⋅ 04/27 ⋅ 0

一文读懂PyTorch张量基础(附代码)

本文介绍了PyTorch中的Tensor类,它类似于Numpy中的ndarray,它构成了在PyTorch中构建神经网络的基础。 我们已经知道张量到底是什么了,并且知道如何用Numpy的ndarray来表示它们,现在我们看...

技术小能手 ⋅ 06/13 ⋅ 0

Python3入门机器学习(二)- Jupyter Notebook与Numpy的使用

Jupyter Notebook 高级-魔法命令 1.%run %run 执行python脚本,并将脚本中的函数加载 可以直接使用import命令导入本机目录下的包 2.%timeit %timeit 测试代码的性能 测试结果表明,运行了一千...

Meet相识_bfa5 ⋅ 04/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 9分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 28分钟前 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 39分钟前 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部