一、函数方法
1、数组创建
zeros、zeros_likes、ones、ones_likes、empty、empty _likes 、arange、random(rand、randn、randint、normal)、array
2、数组属性
shape、dtype、ndim、size、itemsize
3、数组变化
reshape(重塑,不改变原数组)、reval、flatten(扁平化)、concatenate(合并,注意轴向)、splite(拆分)、transpose(转置)、swapaxes(轴对换)
4、数组元素增删
append()、extend()、inserch()、delete()、drop()
5、数组的选择
切片、索引(布尔索引:通过布尔数组进行索引、多维数组的索引、花式索引:通过整数列表、数组进行索引或者用np.ix_())
6、数组的运算(元素级)
±*/
±/标量
±/数组
通用函数
一元函数: abs、aquare、min、max、modf,
二元函数:minimum、add
条件逻辑运算:where
统计运算:sum、mean、std、cumsum累加、cumpod累乘
布尔数组的运算:any测试是否存在ture、all测试是不是都是ture
排序:sort
集合运算:unique唯一值、intersect1d交集、union1d并集、in1d(x,y):x是否在y中
线性代数:dot,from numpy.linalg import det
7、数组的存取
savetxt、loadtxt
二、注意
1、numpy为python带来了真正的多维数组功能,是数据分析包的基础包,提供了高性能数组与矩阵运算处理能力,NumPy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。这是因为:
• NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。
• NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。
2、ndarray数组是一个通用的同构数据容器,即其中所有的元素都是相同的类型,在创建的时候会在内存里存储ndarray的shape、dtype。(可以通过astype创建一个新数组)
3、数组很重要,因为它使你不用编写循环即可对数据执行批量运算。NumPy用户称其为矢量化(vectorization)。大小相等的数组之间的任何算术运算都会将运算应用到元素级.
4、random:种子生成器seed、不改变原数组的随机排序permutation、改变原数组的随机排序shuffle
5、数组的索引和切片返回的是原数组的视图,不会产生新数据,视图的改变会影响原数组,可以用cope()将视图拷贝到新数组,数组的切片只有使用冒号才会选取整个轴,
三、难点
1、axis轴及三维数组的理解(图像处理、RNN序列数据、迭代数据)
2、布尔型索引:跟算术运算一样,数组的比较运算(如==)也是矢量化的。因此,对原数组和某个值的比较运算将会产生一个布尔型数组,&与、|或、~非、
3、条件逻辑运算 (a if c else b) for a,b,c in arr1,arr2,arr_bool
等同于np.where(arr_bool,arr1,arr2),第二三个参数可以为标量,例如np.where(arr>0,1,-1)
四、实战(图像变化)
1、一张图片为一个三维数组(长度,宽度,RGB),其中RGB(红绿蓝)彩色模式,每个颜色0~255
2、PIL库
from PIL import Image
im = np.array(Image.open(path))
b = [255,255,255] – im
new_im = Image.fromarray(b.astype(‘uint8’))
new_im.save(path)