博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Numpy入门
阅读量:6676 次
发布时间:2019-06-25

本文共 2550 字,大约阅读时间需要 8 分钟。

hot3.png

1. ndarray——戴着“面具”的矩阵

ndarray是Numpy的核心,是一个N维数组对象,这里的数组对象指的是通用的同构数据多维容器,因为同构,所以元素类型必须相同。

note: 尽管很多地方称其为数组,但是实际上它就是代码版的矩阵,即戴着“面具”的矩阵。

1.1 属性

(1)shape: 表示ndarray各维度大小的元组

(2)dtype: ndarray元素的数据类型

类型 类型代码
int8、uint8 i1、u1
int16、uint16 i2、u2
int32、uint32 i4、u4
int64、uint64 i8、u8
float16、float32、float64、float128 f2、f4、f8、f16
bool ?
object O
string_ S
unicode_ U

note: object表示python对象类型;长度为10的字符串表示为S10

(3)ndim: ndarray的轴数/维数

1.2 方法

方法 说明
astype() 修改dtype,既可以直接接受dtype显示转换,也可以接受其他的ndarray来隐式地采用其它ndarray的dtype
copy() 创建一个副本

2. 创建ndarray

Numpy中提供了很多方法来创建一些特殊的矩阵。

函数 说明
array() 接受一个序列,将其转换为ndarray。矩阵的元素的类型会自动匹配,也可以显示指定
asarray() 将输入转换成ndarray
arange() 类似于range(),创建一个一维的ndarray
ones(shape, dtype=None) 创建全1矩阵
zeros(shape, dtype=None) 创建全0矩阵
empty(shape, dtype=None) 创建指定shape的随机矩阵
eye(row, col=None, dtype=float) 创建单位矩阵,当row<col时创建的伪单位矩阵
identiy(n, dtype=None) 创建n*n的单位矩阵,这才是货真价实的单位矩阵

note: 和ones()/zeros()/empty()是三个需要指定shape的创建方法不同,ones_like()/zeros_like()/empty_like()根据其他矩阵的shape来创建对应矩阵

3. ndarray的运算

大小相同的ndarray之间的运算都会到元素级,大小不相同的ndarray之间的运算就会采用广播的形式

30ab567287d77a49c452e315cd1ecedfdcf.jpg

note: ndarray与标量直接进行逻辑运算的时候会生成布尔型数组,这里的逻辑运算符包括=、!=、>、-(取反)、<等,当然也可以通过&、|连接多个运算表达式。

4. 索引和切片

索引作用在ndarray的轴上,且一个索引只作用于一个轴。

Numpy中索引有四种,分别是基本索引、切片索引、布尔型索引和花式索引。本节所有例子都基于arr:

arr = [[1,2,3],       [4,5,6],       [7,8,9]]

4.1 基本索引和切片索引

基本索引就是整数索引,有两种表示方式,第一种方式独有,在前一个索引的结果上执行后一个索引

arr[index1][index2]...    # 在arr[index1]结果上执行[index2]操作

第二种方式和切片索引类似,切片索引参考了Python的序列切片,它的功能比基本索引更强大,也可以用来表示整数索引

arr[index1, index2, ...]arr[slice1, slice2, ...]

以上两种索引都是沿着0轴,1轴,... 依次索引或切片。实际使用时,二者可以混用。举个例子

arr[:2, 2]=[3 6]

4.2 布尔型索引

布尔型索引就是使用布尔型ndarray来索引目标ndarray,比如target_arr[bool_arr],此时布尔型ndarray必须与目标ndarray被索引的轴的轴长相等。很好理解这里不给例子了。

布尔型索引相当于另一种形式的基本索引,所以三者可以混用

import numpy as npname = np.array(['jack','bob','jack'])arr = np.array([[1,2,3],[4,5,6],[7,8,9]])arr[name == 'jack', :2] = [[1 2] [7 8]]

4.3 花式索引

和前面两种索引不同的是,花式索引使用list或者ndarray抽取数据到新ndarray中

arr[[1,2], [1,2]] = [5 9]

note: 前一个[1,2]作用于0轴,抽出[[4,5,6],[7,8,9]],后一个[1,2]作用于1轴,分别抽取5和9出来组成[5,9]

5. 通用函数

通用函数都是元素级的ndarray函数,位于numpy下。按照所需ndarray的数量,分为一元函数和二元函数,使用时通过np.func(arr, ...)来调用

一元函数

函数 说明
abs、fabs 计算各元素的绝对值,计算非复数值fabs()更快
sqrt 计算各元素的算术平方根
square 计算各元素的平方
exp  
log、log10、log2、log1p 最后一个1p是(1+x)的简称
sign 1(正数)、0(零)、-1(负数)
ceil 计算大于等于各元素的最小整数
floor 计算小于等于各元素的最大整数

二元函数

函数 说明
add  
substract  
multiply  
divide、floor_divide floor_divide只取商
power  
maximum/minimum  
mod 取余
copysign 将第二个ndarray的元素的符号赋给第一个ndarray的元素
greater、greater_equal、less、less_equal、equal、not_equal 各种比较运算
logical_and、logical_or、logical_xor 各种逻辑运算

 

 

转载于:https://my.oschina.net/u/3877634/blog/1841766

你可能感兴趣的文章
正则表达式之小有名气
查看>>
《PHP 设计模式》翻译完毕
查看>>
关于前端RSA加密和解密的研究
查看>>
前端技术栈补全计划---websocket
查看>>
【数据结构Java语言描述】数组表示顺序表
查看>>
【JS图形学基础】二维图形学的变换
查看>>
mysql分割字符串
查看>>
express如何使用session与cookie
查看>>
react技术栈
查看>>
面向对象的JavaScript(如何一步步成为js高手)
查看>>
Java+MySQL实现附近功能
查看>>
一篇文章带你理解闭包
查看>>
angularJS开发的注意事项汇总
查看>>
Android权限列表
查看>>
Sass基础
查看>>
Spring Cloud(五)断路器监控(Hystrix Dashboard)
查看>>
Webpack3简单入门2
查看>>
Springmvc+mybatis+restful+bootstrap框架整合
查看>>
[译]集群调度架构的变革 (三)
查看>>
JavaScript设计模式与开发实践 - 观察者模式
查看>>