· 用于快速处理任意维度的数组。
· 支持常见的矩阵和数组操作,运算比Python简洁得多。
一、ndarray
定义:Numpy定义了一个N维数组类型ndarray,它用来描述相同类型的“items”的集合。
属性:
形状:
numpy有多维数组,直观来看,中括号有几层便是有几维。
二、数组的基本生成
1. 生成01数组
# 生成01数组
ones = np.ones([4,8]) # 生成4行8列元素全为1的数组
2. 从现有数组中生成
# 从现有数组中生成
a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a) # 深拷贝
a2 = np.asarray(a) # 浅拷贝
a[0,0] = 1000
print(a1)
print(a2)
3. 创建等差数组
# 创建等差数组
b = np.arange(10, 50, 2) # (start, stop, step, dtype)
4. 生成随机数组
正态分布创建方式:
※ 使用np.random模块;
· np.random.randn(d0, d1, ... , dn)
功能:从标准正态分布中返回一个或多个样本值。
· np.random.normal(loc = 0, scale = 1.0, size = None)
loc:该概率分布的均值(float)
scale:该概率分布的标准差(float)
size:整型或整型元组,输出的shape,默认为None
· np.random.standard.normal(size = None)
返回指定形状的标准正态分布的数组。
举例1:生成均值为1.75,标准差为1的正态分布数据,10000000个
# 生成均匀分布的随机数
x1 = np.random.normal(1.75, 1, 10000000)
# 画图看分布状况
# (1)创建画布
plt.figure(figsize=(20,10), dpi=100)
# (2)绘制直方图
plt.hist(x1, 1000)
# (3)显示图像
plt.show()
举例2:随机生成4支股票1周的交易日涨幅数据
4支股票,一周(5天)的涨幅数据,如何获取?
· 随机生成涨跌幅在某个正态分布内,比如均值0,方差1
股票涨跌幅数据的创建
# 创建符合正态分布的4支股票5天的跌涨幅数据
stock_change = np.random.normal(0, 1, (4, 5))
均匀分布创建方式
· 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或元组类型。例如,size=(m, n, k),则输出mnk个样本
返回值:ndarray类型,其参数和size的描述一致
· np.random.randint(low, high=None, size=None, dtyp)
从一个均匀分布中随机采样,生成一个整数或N维整数数组。
整数范围:high不为None时,取[low, high]之间的随机整数。否则取[0, low]之间的随机整数。
# 生成均匀分布
x2 = np.random.uniform(-1, 1, 10000000)
plt.figure(figsize=(20, 10), dpi=100)
plt.hist(x2, 10000)
plt.show()