目录
我们有时需要用python处理某些数据,这就用到了numpy库
它可以灵活的处理ndarray数据,以达到我们想要的数据结果。
当然,前提是这些数据是ndarray类型数据。
那么不是的怎么办呢?
很简单,转化成ndarray类型,然后再处理呗~
前置工作:导入库
首先在终端下载:
pip install numpy
然后输入代码:
import numpy as np
一、创建数组对象
ndarray,即数组数据。
我们可以使用array函数创建。
格式:
np.array(你的数据)
示例:
#初始数据
a1=[1,23,4]
a2=(2,6,9)
a3=[[1,2],[4,6]]
#创建ndarray数组
q1=np.array(a1)
q2=np.array(a2)
q3=np.array(a3)
#输出
print(q1) #[ 1 23 4]
print(q2) #[2 6 9]
print(q3) '''[[1 2]
[4 6]] '''
Tips: a3处的多维数组必须是行列一致,否则q3处须写作np.array([a3, dtype=object)
二、生成数组对象
上文都是将其他对象转化为ndarray数组。
现在来看一看专门生成ndarray数组的函数:
(1)arange
(注:这是arange,不是range)
创建n个一维数组。
示例:
当然,我们也可以设置初始值、终值、步长值。
如,np.arange(1,2,0.5)
那就是[ 1 , 1.5 ]
(2)linspace
np.linspace(a,b,c):从a到b均匀取c个数(可理解为等差序列)
如:
(3)logspace
np.logspace(a,b,c):从a到b取c个等比的数(可理解为等比序列)
如:
(4)矩阵
np.zeros(n) #全零矩阵
np.ones(n) #全1矩阵
np.diag(n) #对角矩阵
示例:
三、ndarray的属性
汇总:
属性 | 说明 |
ndim | 秩 |
shape | 数组维度(形状) |
size | 数组元素个数 |
dtype | 数据类型 |
itemsize | 每个元素字节大小 |
示例:
而且,我们可以利用这些属性进行一些转化。
如:将数据形状转化为3行2列
四、生成随机数
汇总:
函数 | 说明 |
np.random.rand | 生成服从均匀分布的随机数,数值范围为 [0, 1)。 |
np.random.randn | 生成服从标准正态分布(均值为0,标准差为1)的随机数 |
np.random.normal(loc=0.0, scale=1.0, size=None) | 生成服从正态分布的随机数,loc 为均值,scale 为标准差。 |
np.random.poisson(lam=1.0, size=None) | 生成服从泊松分布的随机数,lam 为均值 |
np.random.seed(seed) | 设置随机数生成器的种子,这样可以确保生成的随机数是可重复的。通过固定种子,程序每次运行时都会生成相同的随机数序列。 |
np.random.shuffle(a) | 将数组 a 中的元素随机排列(原地修改) |
np.random.permutation(a) | 返回数组 a 的随机排列,不修改原数组。 |
示例:
格式:
np.random.randint(最小,最大,形状)
如:
如果要生成0-1的小数,那就是:
np.random.rand(几行,几列)
五、数组变换
(1)重整形状
- reshape:改变数组维度(就是形状)
- ravel:将数据散开
示例:
散开则a3=ravel()即可
(注:用此种方式原数组不会改变)
(2)数组合并
- np.hstack(a,b):将数组a和b横向合并
- np.vstack(a,b):将数组a和b纵向合并
- np.concatenate((a,b),c)):c=1则ab横向合并,c=0则纵向合并
(3)数组分割
- hsplit(a,n):将a横向分割为n行
- vsplit(a,n):将a纵向分割为n行
- split(a,m,n):将a分为m行/列(n=1则横向分割,n=0则纵向分割)
(4)数组转置
- transpose(a):将a数组转置
- a.T:将a数组转置
- a.swapaxes:数组轴对换