文档章节

Numpy 基础

demonpro
 demonpro
发布于 2017/07/24 20:26
字数 1299
阅读 6
收藏 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
东城
小蛇学python(11)初窥numpy

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

Data_God
05/26
0
0
[雪峰磁针石博客]scikit-learn_cookbook1: 高性能机器学习-NumPy

源码下载 在本章主要内容: NumPy基础知识 加载iris数据集 查看iris数据集 用pandas查看iris数据集 用NumPy和matplotlib绘图 最小机器学习配方 - SVM分类 介绍交叉验证 以上汇总 机器学习概述...

Python测试开发人工智能
07/27
0
0
入门 | 数据科学初学者必知的NumPy基础知识

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

机器之心
04/21
0
0
【机器学习】Numpy&Pandas 快速入门笔记

Numpy&Pandas 快速入门笔记 Xu An 2018-4-6 ######Numpy部分###### 1、创建array import numpy as np a=np.array([[2,23,4],[21,3,43],[34,43,234]],dtype=np.int32) #创建矩阵 使用dtype进行......

XuAn97916
06/26
0
0
通过python实现神经网络的基础的基础:numpy

numpy是python高性能科学计算和数据分析的基础包,python的很多其他库都构建在numpy之上,因此你要用python做数据分析与挖掘都最好先学一下numpy的基本操作(当然要学numpy首先要把python语言...

单线程程序员
09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决访问swaggerUI接口文档显示basic-error-controler问题

使用swagger生成接口文档后,访问http://localhost:8888/swagger-ui.html#/,显示如下: 解决方法: public Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2)......

张欢19933
21分钟前
1
0
区块链教程以太坊源码分析core-state-process源码分析(二)

兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于if contractCreation && homestead {igas.SetUin...

兄弟连区块链入门教程
26分钟前
0
0
BLAKE2 — fast secure hashing

BLAKE2 — fast secure hashing SPECS | CODE | B2SUM | CONTACT | USERS | THIRD-PARTY SOFTWARE | CRYPTANALYSIS | FAQ Come from http://www.blake2.net/ BLAKE2 is a cryptographic has......

openthings
32分钟前
4
0
Titan Framework MongoDB深入理解3

在前两篇文章中,我们介绍了操作Mongo数据库的类型Curd和Finder,下面要理解的是框架内mongoDB操作的条件类型——MongoDBQueryCondition。 MongoDBQueryCondition是一个接口,规定了一些实现...

云季科技
33分钟前
0
0
数据结构(算法)-树

#include <iostream>#include <malloc.h>using namespace std;#define MaxSize 100typedef char ElemType;typedef struct node{ElemType data;struct node *left ,*......

ashuo
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部