Numpy入门

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

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

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

1.1 属性

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

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

类型 类型代码
int八、uint8 i一、u1
int1六、uint16 i二、u2
int3二、uint32 i四、u4
int6四、uint64 i八、u8
float1六、float3二、float6四、float128 f二、f四、f八、f16
bool ?
object O
string_ S
unicode_ U

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

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

1.2 方法

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

2. 建立ndarray

Numpy中提供了不少方法来建立一些特殊的矩阵。spa

函数 说明
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来建立对应矩阵code

3. ndarray的运算

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

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

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 np

name = 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、log十、log二、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 各类逻辑运算
相关文章
相关标签/搜索