Numpy API函数用法

此部分主要是学习过程中的一些函数笔记.

Where函数

官方文档的解释

然而看的没怎么明白。

numpy.where() 有两种用法:

  1. np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y
  2. np.where(condition) 只有条件 (condition),没有xy,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。

看到知乎回答的图示非常清晰,如下

第一种用法的图示:

输出位置的对应如下:

同理:

第二种用法的图示: 只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。即是第一组为第一维度的坐标,依次对应,每列对应一个元素完整的坐标,如下: 即有:

numpy.random.multinomial函数

官方文档地址

官方介绍
官方介绍

这是 numpy 提供的随机二项式分布实现,二项式分布(binomial distribution)如下表示: \[ P(N)=\begin{pmatrix}n \\ N \end{pmatrix}p^N(1-p)^{n-N} \] 函数原型如下:

1
numpy.random.RandomState.binomial(n, p, size=None)

表示对一个二项分布进行采样,size表示采样的次数,参数中的n, p分别对应于公式中的\(n,p\),函数的返回值表示n成功(success)的次数(也即\(N\))。 举个例子,比如掷骰子,一共3个硬币,每个都投一次,三个都是正面朝上的概率是多少?

这个使用简单的概率统计知识很容易计算得到: \[ P=\begin{pmatrix}n \\ N\end{pmatrix}p^N(1-p)^{n-N}=\begin{pmatrix}3 \\ 0\end{pmatrix}0.5^0(1-0.5)^3=0.5^3 = 0.125 \]

使用上述函数计算大概值则是做足够多次的试验,统计其中全为正面朝上的概率,通过频率计算概率,如下: 实验结果

numpy中矩阵乘法,星乘(*)和点乘(.dot)的区别

1
2
3
4
5
import numpy
a = numpy.array([[1,2],
[3,4]])
b = numpy.array([[5,6],
[7,8]])

计算结果

1
2
3
a*b
>>>array([[ 5, 12],
[21, 32]])
1
2
3
a.dot(b)
>>>array([[19, 22],
[43, 50]])
1
2
3
4
5
6
7
numpy.dot(a,b)
>>>array([[19, 22],
[43, 50]])

numpy.dot(b,a)
>>>array([[23, 34],
[31, 46]])

星乘表示矩阵内各对应位置相乘,保证矩阵size 相同。 点乘表示求矩阵内积,遵循矩阵乘法的规则。

感谢搬砖