8..广播机制:广播(Broadcast)是numpy对不同形状的数组进行数值计算方式,对数组的算术运算通常在相应的元素上进行
—如果两个数组a和b形状相同,即满足a.shape==b.shape,那么a*b的结果就是a与b数组对应位相乘,这要求维数相同,且各维度的长度相同

—当遇到两个形状不同的数组时,可以利用numpy的广播机制进行算术运算,这种机制的核心是对形状较小的数组,在横向或者纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度

4x3的二维数组与长为3的一维数组相加,等效于把数组b在二维上重复4次再运算
—广播的规则:I 让所有输入数组都向其形状最长的数组看齐,形状中不足的部分都通过在前面加1补齐
II 输出数组的形状是输入数组形状的各个维度上的最大值
III 如果输入数组形状的各个维度和输出数组的对应维度的长度相同或者长度为1时,这个数组能够用来计算,否则出错
IV 当输入数组的某个维度为1时,沿着此维度运算时都用此维度上的第一组值
—对于广播规则的另一种简单解释:I 将两个数组的维度大小左右对齐,然后比较对应维度上的数值
II 如果数值相等或其中有一个为1或者为空,则能进行广播运算
III 输出的维度大小为取数值大的数值,否则不能进行数组运算
9.统计函数:numpy可以方便地求出统计学常见的描述性统计量
(1)求平均值mean():

若想求某一维度的平均值,设置axis参数,多维数组的元素指定

(2)中位数np.median:又称中点数,中值,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值
(3)标准差ndarray.std:在概率统计中最常使用作为统计分布程度上的测量,是反映一组数据离散程度最常用的一种量化形式,标准差的定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根

—求标准差的另一种方法:


numpy.average(a,axis=None,weights=None,returned=False)
—weights;数组,可选
与a中的值关联的权重数组。a中的每个值都根据其关联的权重对平均值做出贡献。权重数组可以是一维的(在这中情况下,它的长度必须是沿给定轴的a的大小)或与a具有相同的形状。如果weights=None,则假定a中的所有数据的权重等于1。一维的计算是:
avg=sum(a*weights)/sum(weights)
对权重的唯一限制是sum(weights)不能为0

10.numpy数据类型:
eg.
11.定义结构化数据:
使用数据类型标识码

还可以将两个字符作为参数传给数据类型的构造函数。此时,第一个字符表示数据类型,第二个字符表示该类型在内存中占用的字节数(2,4,8分别代表精度为16,32,64位的浮点数):

12.numpy操作文件loadtxt:loadtxt读取txt文本、csv文件
loadtxt(fname,dtype=<‘float’>,comments=‘#’,delimiter=None,
converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0,encoding=‘bytes’)
eg.使用绝对路径读取文件(路径前加r)

13.随机函数:numpy中也有自己的随机函数,包含在random模块中,它能产生特定分布的随机数,如:正态分布等。下面是一些常见的随机数:

—rand函数根据给定维度生成[0,1)之间的数据
—dn表示每个维度
—返回值为指定维度的array

(2)numpy.random.randn(d0,d1,...,dn):
—randn函数表示返回一个或一组样本,具有标准正态分布
(标准正态分布又称u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1))
—dn表示每个维度
—返回值为指定维度的array
dtype=‘1’)
—返回随机整数,范围区间为[low,high)
—参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int
—high没有填写时,默认生成随机数的范围是[0,low)

—loc:float型或者float型的类数组对象,指定均值μ
—scale:float型或者float型的类数组对象,指定标准差σ
—size:int型或者int型的元组,指定了数组的形状。如果不提供size,且loc和scale为标量(不是类数组对象),则返回一个服从该分布的随机数

14.数组的其他函数

—arr:要输入的数组
—obj:整数或者整数数组,表示要被删除数组元素或者子数组
—axis:沿着哪条轴删除子数组

注:不能使用切片的形式

—arr:输入数组,若是多维数组则以一维数组的形式展开
—return_index:如果为True,则返回新数组元素在原数组中的位置(索引)
— return_inverse:如果为True,则返回原数组元素在新数组中的位置(索引)
— return_counts:如果为True,则返回去重后的数组元素在原数组中出现的次数

—a:要排序的数组
—axis:沿着指定轴进行排序,如果没有指定axis,默认在最后一个轴上排序,若axis=0表示按列排序,axis=1表示按行排序
—kind:默认为quicksort(快速排序)
—order:若数组设置了字段,则order表示要排序的字段
