此部分主要是学习过程中的一些函数笔记.
Where函数
然而看的没怎么明白。
numpy.where() 有两种用法:
np.where(condition, x, y)
满足条件(condition)
,输出x
,不满足输出y
。np.where(condition)
只有条件(condition)
,没有x
和y
,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero
)。这里的坐标以tuple
的形式给出,通常原数组有多少维,输出的tuple
中就包含几个数组,分别对应符合条件元素的各维坐标。
看到知乎回答的图示非常清晰,如下
第一种用法的图示:
输出位置的对应如下:
同理:
第二种用法的图示:
只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。即是第一组为第一维度的坐标,依次对应,每列对应一个元素完整的坐标,如下:
即有:
numpy.random.multinomial函数
这是 numpy 提供的随机二项式分布实现,二项式分布(binomial distribution
)如下表示:
函数原型如下:1
numpy.random.RandomState.binomial(n, p, size=None)
表示对一个二项分布进行采样,size
表示采样的次数,参数中的n, p
分别对应于公式中的$n,p$,函数的返回值表示n
中成功(success)
的次数(也即$N$)。
举个例子,比如掷骰子,一共3个硬币,每个都投一次,三个都是正面朝上的概率是多少?
这个使用简单的概率统计知识很容易计算得到:
使用上述函数计算大概值则是做足够多次的试验,统计其中全为正面朝上的概率,通过频率计算概率,如下:
numpy中矩阵乘法,星乘(*)和点乘(.dot)的区别
1 | import numpy |
计算结果
1 | a*b |
1 | a.dot(b) |
1 | numpy.dot(a,b) |
星乘表示矩阵内各对应位置相乘,保证矩阵size 相同。
点乘表示求矩阵内积,遵循矩阵乘法的规则。
meshgrid() 方法
这个方法从坐标向量返回坐标矩阵。在很多地方都有应用,例如生成等高线图的数据集。
借用一张图显示:
可以看到,meshgrid()
方法接受两个一维向量,生成一个坐标矩阵。
比如在画himmelblau
可视化的时候可以用这个方法:
1 | import numpy as np |
结果如下: