ndarray是Numpy的核心,是一个N维数组对象,这里的数组对象指的是通用的同构数据多维容器,由于同构,因此元素类型必须相同。python
note: 尽管不少地方称其为数组,可是实际上它就是代码版的矩阵,即戴着“面具”的矩阵。数组
(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
方法 | 说明 |
---|---|
astype() | 修改dtype,既能够直接接受dtype显示转换,也能够接受其余的ndarray来隐式地采用其它ndarray的dtype |
copy() | 建立一个副本 |
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
大小相同的ndarray之间的运算都会到元素级,大小不相同的ndarray之间的运算就会采用广播的形式对象
note: ndarray与标量直接进行逻辑运算的时候会生成布尔型数组,这里的逻辑运算符包括=、!=、>、-(取反)、<等,固然也能够经过&、|链接多个运算表达式。blog
索引做用在ndarray的轴上,且一个索引只做用于一个轴。
Numpy中索引有四种,分别是基本索引、切片索引、布尔型索引和花式索引。本节全部例子都基于arr:
arr = [[1,2,3], [4,5,6], [7,8,9]]
基本索引就是整数索引,有两种表示方式,第一种方式独有,在前一个索引的结果上执行后一个索引
arr[index1][index2]... # 在arr[index1]结果上执行[index2]操做
第二种方式和切片索引相似,切片索引参考了Python的序列切片,它的功能比基本索引更强大,也能够用来表示整数索引
arr[index1, index2, ...] arr[slice1, slice2, ...]
以上两种索引都是沿着0轴,1轴,... 依次索引或切片。实际使用时,两者能够混用。举个例子
arr[:2, 2]=[3 6]
布尔型索引就是使用布尔型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]]
和前面两种索引不一样的是,花式索引使用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]
通用函数都是元素级的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 | 各类逻辑运算 |