Numpy的一些用法
numpy
import numpy as npyimport numpy as np
reshape() 中的-1
新数组的shape属性应该要与原来数组的一致,即新数组元素数量与原数组元素数量要相等。一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的另外一个shape属性值。
dot()
如果为一维矩阵,则返回内积,如(2,3)和(4,5)则返回23
1 | x = np.array([2,3]) |
如果为多维矩阵,则返回矩阵相乘后的矩阵
1 | x = np.array([[1, 2], |
shape
参考博客:https://www.pythonheidong.com/blog/article/148310/df0823653bdb440c1ce3/
img.shape[0]:图像的垂直尺寸(高度)
img.shape[1]:图像的水平尺寸(宽度)
img.shape[2]:图像的通道数
1 | x = np.array([[1, 2], [2, 3], [1, 3]]) |
+ array的相加
由于广播作用
例如:
1 | x = np.array([[1,2], |
如(N,M)和(,M)相加后,即列数相等,从第一行到最后一行逐行与后面的array相加
flatten()
将数组转换为一维数组
1 | x = np.array([[1, 2], |
eye()
Return a 2-D array with ones on the diagonal and zeros elsewhere.
函数eye()的作用是返回一个对角线diagonal上全是1,而其他位置全为0的一个二维数组(2D-array)。
numpy.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’)
Parameters:
N : int,Number of rows in the output.
M : int, optional,Number of columns in the output. If None, defaults to N.
k : int, optional ——K为对角元素的索引。
Index of the diagonal: 0 (the default) refers to the main diagonal, a positive value refers to an upper diagonal, and a negative value to a lower diagonal.
默认的索引为0对应的是the main diagonal, index为正值对应一个upper diagonal, index为复制对应的是lower diagonal.
1 | print(np.eye(2)) |
random.multivariate_normal()
用于根据实际情况生成一个多元正态分布矩阵。
**def multivariate_normal(mean, cov, size=None, check_valid=None, tol=None) **
其中mean和cov为必要的传参而size,check_valid以及tol为可选参数。
mean:mean是多维分布的均值维度为1;
cov:协方差矩阵(协方差基本概念)。注意:协方差矩阵必须是对称的且需为半正定矩阵;
size:指定生成的正态分布矩阵的维度(例:若size=(1, 1, 2),则输出的矩阵的shape即形状为 1X1X2XN(N为mean的长度))。
check_valid:这个参数用于决定当cov即协方差矩阵不是半正定矩阵时程序的处理方式,它一共有三个值:warn,raise以及ignore。当使用warn作为传入的参数时,如果cov不是半正定的程序会输出警告但仍旧会得到结果;当使用raise作为传入的参数时,如果cov不是半正定的程序会报错且不会计算出结果;当使用ignore时忽略这个问题即无论cov是否为半正定的都会计算出结果。3种情况的console打印结果如下:
vstack() & hstack()
拼接数组的方法:
np.vstack():在竖直方向上堆叠
np.hstack():在水平方向上平铺
1 | import numpy as np |
enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
enumerate(sequence, [start=0])
start: 默认从0开始
1 | for c, d in enumerate([3.0]): |
argmax()
1 | import numpy as np |
1 | import numpy as np |
random.rand()
numpy.random.rand(d0,d1,…,dn)
通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。
1 | # 无参数时,返回一个样本 |
random.randn()
numpy.random.randn(d0,d1,…,dn)
- randn函数返回一个或一组样本,具有标准正态分布。
- dn表格每个维度
- 返回值为指定维度的array
1 | # 无参数时,返回一个样本 |
*
这不是NumPy特有的语法;它是Python语法.所谓的* -operator是Python语法,它在参数列表中对序列进行解包(参见 [Unpacking Argument Lists](javascript:void())).
您的示例中的用法是将形状元组解压缩为单独的参数.这是必需的,因为numpy.random.randn将任意数量的整数作为参数,而不是整数元组.
1 | x = np.array([[1, 2],[2,3]]) |
uniform()
random.uniform(x, y)
将随机生成一个实数,它在 [x,y] 范围内。
1 | x = np.random.uniform(2,10) |