numpy是一个开源的Python科学计算库
# 创建np的二维数组arr = np.array([[1,2,3],[4,5,6]])
1 ndarray的属性
数组属性反映了数组本身固有的信息。
| 属性名字 | 属性解释 |
|---|---|
| ndarray.shape | 数组维度的元组 |
| ndarray.ndim | 数组维数 |
| ndarray.size | 数组中的元素数量 |
| ndarray.itemsize | 一个数组元素的长度(字节) |
| ndarray.dtype | 数组元素的类型 |
生成数组的方法
生成0和1的数组
- np.ones(shape, dtype)
- np.ones_like(a, dtype)
- np.zeros(shape, dtype)
np.zeros_like(a, dtype)
ones = np.ones([4,8])onesnp.zeros_like(ones)
从现有数组生成
生成方式
np.array(object, dtype)
np.asarray(a, dtype)
a = np.array([[1,2,3],[4,5,6]])# 从现有的数组当中创建a1 = np.array(a)# 相当于引用的形式,并没有真正的创建一个新的a2 = np.asarray(a)
生成固定范围的数组
np.linspace (start, stop, num, endpoint)
创建等差数组 — 指定数量
参数:
创建等差数组 — 指定步长
参数
创建等比数列
参数:
-
正态分布
一、基础概念复习:正态分布(理解)
a. 什么是正态分布
正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的方差,所以正态分布记作N(μ,σ )。
b. 正态分布的应用
生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述。
c. 正态分布特点
μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
标准差如何来?方差
是在概率论和统计方差衡量一组数据时离散程度的度量

其中M为平均值,n为数据总个数,σ 为标准差,σ ^2可以理解一个整体为方差
标准差与方差的意义
二、正态分布创建方式
np.random.randn(d0, d1, …, dn)
功能:从标准正态分布中返回一个或多个样本值
- np.random.normal(loc=0.0, scale=1.0, size=None)
loc:float此概率分布的均值(对应着整个分布的中心centre)scale:float此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)size:int or tuple of ints输出的shape,默认为None,只输出一个值
- np.random.standardnormal(_size=None)
举例1:生成均值为1.75,标准差为1的正态分布数据,100000000个
x1 = np.random.normal(1.75, 1, 100000000)
举例2:随机生成4支股票1周的交易日涨幅数据
4支股票,一周(5天)的涨跌幅数据,如何获取?
-
股票涨跌幅数据的创建
# 创建符合正态分布的4只股票5天的涨跌幅数据stock_change = np.random.normal(0, 1, (4, 5))stock_change
均匀分布
np.random.rand(d0, d1, …, dn)
- 返回[0.0,1.0)内的一组均匀分布的数。
- np.random.uniform(low=0.0, high=1.0, size=None)
- 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.
- 参数介绍:
- low: 采样下界,float类型,默认值为0;
- high: 采样上界,float类型,默认值为1;
- size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出m_n_k个样本,缺省时输出1个值。
- 返回值:ndarray类型,其形状和参数size中描述一致。
np.random.randint(low, high=None, size=None, dtype=’l’)
直接进行索引,切片
- 对象[:, :] — 先行后列
二维数组索引方式:
举例:获取第一个股票的前3个交易日的涨跌幅数据
# 二维的数组,两个维度stock_change[0, 0:3]
三维数组索引方式:
# 三维a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])# 返回结果array([[[ 1, 2, 3],[ 4, 5, 6]],[[12, 3, 34],[ 5, 6, 7]]])# 索引、切片>>> a1[0, 0, 1] # 输出: 2
3 形状修改
3.1 ndarray.reshape(shape, order)
返回一个具有相同数据域,但shape不一样的视图
行、列不进行互换
# 在转换形状的时候,一定要注意数组的元素匹配stock_change.reshape([5, 4])stock_change.reshape([-1,10]) # 数组的形状被修改为: (2, 10), -1: 表示通过待计算
3.2 ndarray.resize(new_shape)
修改数组本身的形状(需要保持元素个数前后相同)
- 行、列不进行互换 ```python stock_change.resize([5, 4])
查看修改后结果
stock_change.shape (5, 4)
<a name="rlaLz"></a>### 3.3 ndarray.T- 数组的转置- 将数组的行、列进行互换```pythonstock_change.T.shape(4, 5)
4 类型修改
4.1 ndarray.astype(type)
返回修改了类型之后的数组
stock_change.astype(np.int32)
4.2 ndarray.tostring([order])或者ndarray.tobytes([order])
构造包含数组中原始数据字节的Python字节
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])arr.tostring()
5 数组的去重
5.1 np.unique()
temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])>>> np.unique(temp)array([1, 2, 3, 4, 5, 6])
