# 安装
## 1.以管理员的形式打开cmd
## 2.输入命令安装numpy插件
pip install numpy
## 3.使用以下命令查看是否安装
pip list
# 创建
## 数据创建
### 使用array创建
numpy.array(object,dtype = None,copy = True,order = None,subok = False,ndmin = 0)
dtype:数据类型
copy:复制/拷贝 如果是True,修改副本数据,原数据不变 如果是false的话 元数据改变
order: C按照行 F按照列 A随机
subok:默认(False)下,返回的数据被强制为基类数组(ndarray),否则,返回子类(矩阵)matrix
ndimin:指定返回数组的最小维数
list01 = [0,-1,3]
np01 = np.array(list01)
np02 = np.array(list01,dtype="float")
np03 = np.array(list01,dtype="bool")
np04 = np.array(np01,copy=True)
np05 = np.array(np01,copy=False)
np04[2] = 100
np05[2] = 50
print(np01) #[1 2 3]
print(np02) #[1. 2. 3.]
print(np03) #[ True True True]
print(np01)
print(np04)
print(np05)
list02 = [
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[16,17,18,19,20]
]
np01 = np.array(list02)
print("原数组",np01)
np02 = np.array(np01,ndmin=3)
print(np02)
np01 = np.matrix(list02)
print("原数组类型",type(np01))#<class 'numpy.matrix'>
np02 = np.array(np01,subok=True)
print("np02的数据类型",type(np02))#<class 'numpy.matrix'>
np03 = np.array(np01,subok=False)
print("np03的数据类型",type(np03))#<class 'numpy.ndarray'>
np01 = np.array(list02)
print("原数组",np01)
print("按照C进行分组排序")
for i in np.nditer(np01,order="C"): #nnditer 顺序迭代
print(i,end = " ") #1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
print("按照F进行分组排序")
for i in np.nditer(np01,order="F"): #nnditer 顺序迭代
print(i,end = " ") #1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 5 10 15 20
list03 = [
[
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[16,17,18,19,20]
],
[
[21,22,23,24,25],
[26,27,28,29,30],
[31,32,33,34,35],
[36,37,38,39,40]
]
]
np03 = np.array(list03)
print(np03)
### 使用arange创建
arange(start,stop,step,dtype) 返回ndarray
1.不写start,默认从0开始
2.左开右闭
3.step步长,不写默认是1
arange 只能创建一维数组,想要二维数组和三维数组必须进行转换
.reshape(行,列) 行*列=总长度
np01 = np.arange(10)
print(np01)#[0 1 2 3 4 5 6 7 8 9]
np02 = np.arange(3,10)
print(np02)#[3 4 5 6 7 8 9]
np03 = np.arange(1,10,2)
print(np03)#[1 3 5 7 9]
np04 = np.arange(1,10,dtype="float")
print(np04)#[1. 2. 3. 4. 5. 6. 7. 8. 9.]"""
np01 = np.arange(20)
np02 = np01.reshape(4,5)
print(np02)
np03 = np01.reshape(2,2,5)
print(np03)
### 使用random创建数组
(一) np.random.random(size) 生成0到1之间的随机小数
1.size 如果不写数据,就生成基本数据类型
2.size 如果是一个数据(5),那就是一维数组,如果size是(行,列),那就是二维数组
size=(个数,行,列),三维数组
np01 = np.random.random()
print(np01)#0.7418534248022525
print(type(np01))#<class 'float'>
一维数组
np02 = np.random.random(size=5)
print(np02)#[0.40251819 0.77955172 0.03375353 0.30053247 0.34439915]
print(type(np02))#<class 'numpy.ndarray'>
二维数组
np03 = np.random.random(size=(4,5))
print(np03)
三维数组
np04 = np.random.random(size=(2,4,5))
print(np04)
(二) np.random.randint(low,high=None,size=None,dtype="1") 生成随机的整数
low:开始
high = None:结束
size:长度
dtype数据类型,默认是int32 np01.dtype属性
1.左开右闭
2.不写low默认是0
np01 = np.random.randint(20)
print(np01)#16
print(type(np01))#<class 'int'>
一维数组
np02 = np.random.randint(1,10,size=5)
print(np02)
二维数组
np03 = np.random.randint(1,10,size=(4,5))
print(np03)
三维数组
np04 = np.random.randint(1,10,size=(2,4,5))
print(np04)
(三)np.random.randn(d0,d1,d2,d3......) 生成标准正态的随机数(期望为0,方差为1)
np01 = np.random.randn()
print(np01)
print(type(np01))
一维数组
np02 = np.random.randn(5)
print("np02",np02)
二维数组
np03 = np.random.randn(4,5)
print("np03",np03)
三维数组
np04 = np.random.randn(2,4,5)
print(np04)
(四)np.random.norml(loc,scale,size)生成正态分布(指定期望和方差)
loc:期望,默认0
scale:方差,默认1.0
size:长度
一维数组
np01 = np.random.normal(loc=0,scale=2.0,size=5)
print(np01)
二维数组
np02 = np.random.normal(loc=2,scale=1.0,size=(4,5))
print(np02)
三维数组
np03 = np.random.normal(loc=2,scale=3.0,size=(2,4,5))
print(np03)
(五)np.random.uniform(low,high,size) 生成均匀分布的随机数
low:不写默认是0
high:结尾
size:长度
1.左开右闭
一维数组
np01 = np.random.uniform(1,2,size=5)
print(np01)
(六)np.random.shuffle(ArrayLike)随机打乱顺序
np01 = np.random.randint(1,10,size=5) #一维数组
print("原数组",np01)#原数组 [7 9 4 3 7]
np.random.shuffle(np01)
print("随机排序后",np01)#随机排序后 [7 9 3 7 4]
### 使用zeros创建数组
(一)numpy.zeros(shape,dtype=floatt,order="c") 创建指定大小的数组,数组以0填充
shape:维度
dtype:数据类型
np01 = np.zeros(shape=(4,5),dtype=np.int32)
print(np01)
np.ones(shape,dtype=None,order='c',*,like=None) 创建3*4的元素全为1的数组
#np,empty((shape,dtype=None,order='c')创建2*3的空数组,
#空数据中的值并不为0.而是未初始化的垃圾值
np01 = np.ones(shape=(2,6),dtype = np.float32)
print(np01)
np02 = np.empty(shape=(4,7))
print(np02)
#np.zeros_like(ndarray) 以ndarray相同维度创建元素全为0数组
#np.ones_like(ndarray)相同维度创建元素全为1数组
#np.empty_like(ndarray)以ndarray相同维度创建空数组
np01 = np.random.randint(1,10,size=(4,5))
print("np01的维度是",np01.shape)
print("np01的数据是",np01)
np02 = np.zeros_like(np01)
print("np02的维度是",np02.shape)
print("np02的数据是",np02)
#np.eye(N,M=None,k=0,dtype=float,order='c',*,like=None)
#对角线是1,其余的全是0
#N:输出的行
#M:输出的列,不写默认和N一样
#K:索引,决定了第一个1出现的位置,默认是0
np01 = np.eye(N=5,k=1)
print(np01)
np.full(shape,fill_value,dtype=None,order='c',*,like=None)
可以获取指定维度的指定数据的数组
shape:维度
fill_value;数据/值
np01 = np.full(shape=(2,5),fill_value=100)
print(np01)
### 使用linspace创建数组
np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
获取步长一样的数组
start:起始数据
stop:结束数据
num=50:个数,默认50个
dtype:数据类型
endpoint=True:默认(true):左开右开,False:左开右闭
retstep=False:显示/打印步长,默认False不打印
np01 = np.linspace(1,10,num=10,dtype=np.int32)
print(np01)
np02 = np.linspace(1,10,num=10,dtype=np.int32,endpoint=False)
print(np02)
np03 = np.linspace(1,20,num=10,dtype=np.float32,retstep=True)
print(np03)
### 使用logspace创建数组
np.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)
base=10.0:底数,默认是10
np01=np.logspace(1,10,num=5)
print(np01)
np02=np.logspace(1,10,num=5,base=2)
print(np02)