numpy复习

创建array、array属性

创建array

import numpy as np

#一位数组:序列
list1 = [1,2,3,4,5]
v = np.array(list1)
print(v)
'''
[1 2 3 4 5]
'''

#二维数组:[多个一维数组构成],有两层中括号
m = np.array([list1,list1,list1])
print(m)
'''
[[1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]]
'''

#三维数组[多个二维数组构成]
z1 = np.array([m,m])
print(z1)
z2 = np.array([[list1,list1],[list1,list1]])
print(z2)
'''
[[[1 2 3 4 5]
  [1 2 3 4 5]
  [1 2 3 4 5]]

 [[1 2 3 4 5]
  [1 2 3 4 5]
  [1 2 3 4 5]]]

[[[1 2 3 4 5]
  [1 2 3 4 5]]

 [[1 2 3 4 5]
  [1 2 3 4 5]]]
'''

#更高维的数组

array的属性

'''
数组的属性:最外侧中括号有几个就是几维
'''
#一维数组
v.shape
v.ndim
v.size
v.dtype

#二维数组
m.shape#array形状
m.ndim#array维度
m.size#元素数量
m.dtype#元素类型

#三维数组
z1.shape
z1.ndim
z1.size
z1.dtype

数组的升维和降维

升维

"""
数组的升维度
"""
import numpy as np

list1 = [1,2,3,4,5,6,7,8]
v = np.array(list1)
print(v)

#一维变二维【元素总数要相同:2*4=8】【-1】代表自动计算行列
#r1 = v.reshape(2,-1) 
r1 = v.reshape(2,4)
print(r1) 

#一维变三维
r2 = r1.reshape(2,2,2)
print(r2)

#二维变三维
r3 = r2.reshape(1,2,4)#一个2×4的三维矩阵,(2,2,2)2个2*2的矩阵
print(r3)

#resize()和#reshape()的区别:resize【不返回计算结果】【直接修改原始数组】
#r4 = v.resize(2,4)
#print(r4)#返回None
v.resize(2,4)
print(v)#其实是改变了v

降维

"""
数组的降维
"""
import numpy as np

list1 = [1,2,3,4,5,6,7,8]
v = np.array(list1)
v = v.reshape(2,2,2)
print(v)
v.ndim
'''
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
'''

#降三维降为二维
r1 = v.reshape(2,4)
print(r1)
'''
[[1 2 3 4]
 [5 6 7 8]]
'''
r1 = v.reshape(1,8)
print(r1)#仍然是一个二维数组,reshpe无法将高维转化为一维
'''
[[1 2 3 4 5 6 7 8]]
'''

#将高维数据转化为1维
#ravel()
r2 = v.ravel()
print(r2)
r2.ndim
'''
[1 2 3 4 5 6 7 8]
1
'''

#flatten()可以将高维数据展平
r3 = v.flatten()
print(r3)
r3.ndim

#补充:使用shape和一个元组也可以完成一个降维度
v.shape = (2,4)
print(v)
'''
[[1 2 3 4]
 [5 6 7 8]]
'''

创建特殊的array

"""
创建特殊数组:主要是为了占位
"""
import numpy as np

#创建全为0的数组zeros()
v = np.zeros(5)
r1 = np.zeros((2,3))
r2 = np.zeros((2,2,2))

#创建全为1的数组ones()
v =np.ones(5)
r1 = np.ones((2,3))
r2 = np.ones((2,2,2))

#创建全为2的数组full():arg1-->行列的元组,arg2-->元素值
r1 = np.full((2,3),2)
r2 = np.full((2,2,2),2)

#小补充eye()创建单位阵,如果多出行列就用0补充
r1 = np.eye(4)
print(r1)
r2 = np.eye(3,4)
print(r2)
'''
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]]
'''

numpy中常用的两个函数:arange()、linspace()

"""
numpy中两个常用的函数
"""
import numpy as np

#arange(start,end,step) ---->range(start,end,step)
#[左开右边=闭的区间]
r1 = np.arange(0,9,2)
print(r1)

#linspace(satrt,end,nums):eg从00开始,到1结束,生成10个刻度[左右都是闭区间]
r2 = np.linspace(0,1,10)
print(r2)

数组的选取和修改

一维数组的选取和修改

"""
一维数组的选取和修改
"""
import numpy as np

array = np.arange(9,0,-1)
print(array)

#选取某个元素
array[1]

#选取某些元素
array[[1,3,5]]

#切片【左闭右开】
print(array[1:5])

#修改某个元素
array[[1,3,5]] = 20
print(array)

#批量修改某些元素
array[0:3] = 100
print(array)

二维数组的选取和修改

"""
二维数组的选取和修改
"""

import numpy as np

array1 = np.arange(24).reshape(4,6)
print(array1)

#选取某个元素
array1[1,4]

#选取某行元素
array1[1,:]

#选取某些行
array1[1:4,:]#连续的1-3行
array1[[1,4],:]#选取1和4行

#选取某些列
array1[:,1:4]
array1[:,[1,4]]

#修改某个元素
array1[1,4] =100

#修改某行元素
array1[1,:] = 50

#修改就是在选取的基础上赋值

三维数组的选取和修改

"""
三维数组的选取和修改
"""
import numpy as np

array1 = np.arange(48).reshape(2,4,6)
print(array1)


#选取某个元素
#首先确定选取哪个二维数组,之后和二维数组的选取和修改一样
array1[1,0,0]#第一个二维数组的0行0列

#选取某行
array1[0,1,:]

#选取某些行
array1[0,1:4,:]
array1[0,[1,4],:]

#选取某列
array1[0,:,1]

#选取某些列
array1[0,:,1:4]
array1[0,:,[1,4]]

#修改就是直接在选取的基础上赋值

数组的组合和数组的切割

数组的组合

"""
数组的组合
"""
import numpy as np

array1 = np.arange(9).reshape(3,3)
array2 = 2 * array1
print(array2)


#水平组合 horizontal
np.hstack((array1,array2))
np.hstack((array2,array1))
np.stack((array1,array2,array2))

#垂直组合vertical
np.vstack((array1,array2))
#和水平组合相同

#concatenate()多个矩阵组合:axis = 1跨列,axis = 0跨行
np.concatenate((array1,array2),axis = 1)

数组的切割

	"""
数组的切割
"""
import numpy as np

array1 = np.arange(16).reshape(4,4)

#水平切割
np.hsplit(array1,2)
np.split(array1,2,axis = 1)

#垂直切割
np.vsplit(array1,2)
np.split(array1,2,axis = 0)


#强制分割
np.array_split(array1,3,axis = 1)

数组的算术运算

"""
数组的算术运算
"""
import numpy as np
array1 = np.arange(1,5,1).reshape(2,2)
array2 = 2*array1
print(array1)
print(array2)

#数组的加法 【对应位置上元素的求和】
print(array1 - array2)

#数组的减法【同上】
print(array1 - array2)

#数组的乘法【同上】
print(array1 * array2)

#数组的除法【同上】
print(array1 / array2)

#数组的取余(%)【同上】
print(array1 % array2)


#数组的取整【同上】
print(array1 // array2)

数组的深拷贝和浅拷贝

直接赋值是浅拷贝,使用copy方法是深拷贝

numpy中直接赋值是浅拷贝(目的:把a和b关联起来)

numpy中copy()是深拷贝(目的:把a的值给b)

numpy内的随机模块

np.random.randint()

"""
numpy内的随机模块
"""
import numpy as np
import matplotlib.pyplot as plt

'''
randin(start,end)
产生一个随机整数
(0,10)-->左闭合右开
'''
#随机种子
np.random.seed(100)#100对应一个数字
r1 = np.random.randint(0,10)
print(r1)

#绘制直方图
a = []
for i in range(1000):#参数越大,越接近均匀分布
    a0 = np.random.randint(0,10)
    a.append(a0)
plt.hist(a,color = 'r')

np.random.rand()

'''
rand():0-1之间的随机浮点数
'''
#随机种子
np.random.seed(100)
r1 = np.random.rand()
print(r1)

np.random.nomal()

'''
nomal():生成符合正态分布的数据
N(0,1)
'''
r2 = np.random.rand()
print(r2)
#生成随机矩阵
r3 = np.random.randint(0,10,size = (5,5))
print(r3)

r4 = np.random.rand(5,5)
print(r4)

r5 =np.random.normal(0,1,size = (5,5))
print(r5)

numpy内一些函数的使用

"""
numpy内一些函数的使用
"""
import numpy as np

array1 = np.random.normal(size = (5,5))
print(array1)


#一些函数
#求方差
print(array1.var())

#求标准差
print(array1.std())

#求均值
print(array1.mean())

#求和
array1.sum()

#求中位数
np.median(array1)

#求和运算
#对矩阵的行求和
array1.sum(axis = 1)
#列的求和
array1.sum(axis = 0 )

numpy中的矩阵运算

"""
numpy的矩阵运算
"""
import numpy as np

#生成两个基数组
a = np.arange(4).reshape(2,2)
b = a.copy()

#矩阵的运算
##矩阵的加减乘和求逆
###加减:对应元素加减

###乘
a.dot(b)
np.dot(a,b)

###求逆
'''
a*b= E【E是单位阵】,若已知a,a乘b是单位阵,那么b就是a的逆
inv():
    并不是所有矩阵都有逆,
    在numpy中一个矩阵即使没有逆,也会被给一个逆(伪逆)  
'''
np.linalg.inv(a)
a.dot([[-1.5,  0.5],
       [ 1. ,  0. ]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值