-
简介
-
操作
- 数据的算数和逻辑运算
- 傅里叶转换和用于图形曹祖
- 线性代数
-
ndarray对象
-
示例1
- import numpy as np
a=n.array([1,2,3]
print(a))
-
示例2
- import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(a)
-
示例3
- import numpy as np
a=np.array([1,2,3,],ndmin=2)
print()a
- 示例4
-
数据类型 ndarray
- **ndarray ** 对象由计算机内存中的一维连续区域组成,带有将每个元素映射到内存块中某个位置的索引方案。 内存块以按行(C 风格)或按列(FORTRAN 或 MatLab 风格)的方式保存元素。
-
创建 np.array()
-
object
- 可迭代序列
-
dtype
- 数据类型
-
copy
- 对象是否可以复制
-
order
- C行F列A
- subok
-
ndmin
- 返回数组的最小维数
-
数据类型
- bool
- int
- intc
- intp
- int8
- int16
- int32
- int64
- uint8 16 32 64
- float64
- 数据类型
- 数据大小
- 字节序
- 内存块
-
数据类型修改
- 一种是定义数组的时候指定类型 np.array(dtype="flaot64")
- 另一种是 数组。dtype(数据类型)
-
数组属性
-
ndarray.shape
- 数组属性返回一个包含数组维度的元组,可以调节数组大小
-
示例1
- shape 返回数组维度
-
示例2
- reshape 修改数组维度
-
ndarray.ndim
- 返回数组的维数
-
ndarray.itemsiz
- 返回数组种每个元素的字节单位长度
- 比如数组类型微int8,,一个字节,浮点数 四个字节
- ndarray.flags
-
数组创建历程
-
np.empty()
-
shape
- 维度
-
dtype
- 类型
-
order
- 风格
- 数组元素为随机值
- np.zeros()
- np.ones()
-
来自现有数据的数组
-
np.asarray
-
a
- 现有数组
-
dtype
- 类型
-
order
- 风格
-
np.frombuffer
- 此函数将缓冲区解释为一维数组,暴露缓冲区接口的任何对象都用作参数来返回ndarry
-
np.fromiter
-
iterable
- 任何可迭代对象
-
dtype
- 返回数组的数据类型
-
count=-1
- 需要读取的数据数量,默认为-1 读取所有数据
-
来着数值范围的数组
-
np.arange()
-
start
- 范围的起始值 默认为0
-
stop
- 范围的终止值
-
step
- 两个值的间隔
-
dtype
- 数据类型
-
np.linspace()
-
start
- 起始值
-
stop
- 终止值
-
num
-
要生成的间隔样例数量,,默认50
- 子主题 1
-
endpoint
- 序列种是否包含stop值
-
retstep
- 如果为true,返回样例,以及连续数字之间的步长
- dtype
-
np.logspace
- 返回一个ndarray对象,其中包含在对数刻度上均匀分布得数字,刻度得开始和结束端点事某个底数得幂
- start
- stop
- endponint
- base
- dtype
-
切片和索引
-
三种可用得索引方法类型
- 字段访问
-
基本切片
-
slice
- start
- 索引起始和结束
- stop
- step
- 步长
-
示例一
-
import numpy as np
a = np.arange(10)
s = slice(2,7,2)
print a[s]
-
示例二
-
import numpy as np
a = np.arange(10)
b = a[2:7:2]
print b
-
示例三
-
# 对单个元素进行切片
import numpy as np
a = np.arange(10)
b = a[5]
print b
-
示例四
-
# 对始于索引的元素进行切片
import numpy as np
a = np.arange(10)
print a[2:]
-
示例五
-
# 对索引之间的元素进行切片
import numpy as np
a = np.arange(10)
print a[2:5]
-
示例六
-
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print a
# 对始于索引的元素进行切片
print '现在我们从索引 a[1:] 开始对数组切片'
print a[1:]
-
高级索引
-
整数索引
- import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print y
-
import numpy as np
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
print '我们的数组是:'
print x
print '\n'
# 切片
z = x[1:4,1:3]
print '切片之后,我们的数组变为:'
print z
print '\n'
# 对列使用高级索引
y = x[1:4,[1,2]]
print '对列使用高级索引来切片:'
print y
-
布尔索引
-
import numpy as np
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
print '我们的数组是:'
print x
print '\n'
# 现在我们会打印出大于 5 的元素
print '大于 5 的元素是:'
print x[x > 5]
-
import numpy as np
a = np.array([np.nan, 1,2,np.nan,3,4,5])
print a[~np.isnan(a)]
-
numpy 广播
- 是指numpy在算术运算期间处理不同形状得数组得能力,如果两个阵列具有完全相同得形状,则这些操作被无缝执行
- 数组拥有相同形状
- 数组拥有相同得维数,每个维度拥有相同长度,或者长度为1
- 数组拥有极少得维度,可以在其前面追加长度为1得维度
-
数组上的迭代
-
numpy包含一个迭代器对象mditer,是一个有效的多维迭代器对象,
-
import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
print '原始数组是:'
print a print '\n'
print '修改后的数组是:'
for x in np.nditer(a):
print x,
-
修改数组的值
-
import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
print '原始数组是:'
print a
print '\n'
for x in np.nditer(a, op_flags=['readwrite']):
x[...]=2*x
print '修改后的数组是:'
print a
-
数组操作
-
修改形状
-
reshape不改变数组的条件下修改形状
- arr 要修改形状的数组
- newshape 整数或者整数数组,新的形状应当兼容原有形状
- order
- flat 数组上的一维迭代器
-
flatten
- 返回折叠为一维的数组副本
- ravel
-
翻转操作
- transpose
- np。T
-
rollaxis向后滚动指定的轴
- arr 输入数
- axis 要向后滚动的轴,其他轴的相对位置不会改变
- start 默认为零,表示完整的滚动,会滚动到指定位置
- swapaxes互换数组的两个轴
-
修改维度
- bradcast 产生模仿广播的对象
- broadcast_to将数组广播到新形状
- expand_dims 扩展数组的形状
- squeeze 从数组的形状中删除丹维条码
-
数组的链接
-
concatenate 沿着现存的轴连接数据序列
- 连接相同形状的两个或者多个数组
- stack 沿着新轴连接数组序列
- hstack 水平堆叠序列中的数组,列方向
- vstack 行方向
-
数组分割
-
split
- arr 被分割的输入数组
- indices_or_sections 可以是整数,表明要从输入数组创建的,
- hsplit
- vsplit
-
添加/删除元素
-
resize 返回指定形状的新数组
- 返回指定大小的新数组,如果新大小大于源是大小,则包含原始数组中元素的重复副本
-
append 将值添加到数组末尾
- 在输入数组的末尾添加值,附加操作不是原地的,二十分配新的数组
-
insert 沿着指定轴将值插入到指定下标之前
- arr输入数组
- obj在其之前插入的值的索引
- values 要插入的值
- axis 沿着它插入的轴
- delete 返回删掉某个轴的子数组的新数组
- unique 寻找数组内唯一元素
-
字符串函数
- add() 返回两个str数组的组个字符串连接
- multiply 返回按元素多重连接后的字符串
- center 返回给定字符串的副本,
- capitalize 返回给定字符串的副本,其中只有第一个字符串大写
- title
- lower 元素转换为小写
- uppper
- split()
- splitline()
- strip()
- join()
- replace()
- decode()
- ecode()
-
算数函数
- 三角函数
-
舍入函数
- around()四舍五入
- floor()此函数返回不大于输入参数的最大整数
- ceil 向上取整
-
算数运算
- add
- subtract
- multiply
- divide
- reciprocal 倒数
- power 幂数
- mod() 返回余数
-
统计函数
- amin() 返回指定轴的最小值
- amax 返回指定轴的最大值
- ptp() 返回指定值的最大值和最小值
- median()中值定义为将数据样本的上半部分和下半部分分开的值
- mean()
- average()
-
标准差
std = sqrt(mean((x - x.mean())**2))
- std()
- 方差 var
-
排序、搜索、计数函数
-
sort()
- a,要排序的数组
- axis 沿着什么轴
- kind,默认快速排序
- order 如果数组包含字段,则是要排序的字段
- argsort()
- lexsort()返回一个索引数组
-
argmax()
- 返回最大值的索引
-
argmin()
- 返回最小值的索引
-
nonzero()
- 返回输入数组中非零元素的索引
-
where()
- 返回输入数组中满足给定条件的元素索引
-
extract
- 返回满足任何条件的元素
-
拷贝
- 深浅拷贝
-
矩阵库
- empty()
- zeros()
- ones()
- eye()
-
identity()
- 返回给定大小的单位矩阵,
-
rand()
- 返回给定大小的随机数数组
-
线性代数
-
dot()
- 两个矩阵的点积
-
vdot()
- 返回两个向量的点积
-
inner()
- 返回一维数组的向量内积
- matmul()
- determinant()
- solve
- inv