Numpy
数组、矩阵
import numpy as np
#数组
t1 = np.array([1,2,3]) #out:[1 2 3] 数组
t2 = np.array(range(10)) #[0 1 2 3 4 5 6 7 8 9]
t3 = np.arange(4,10,2) #[4 6 8]
t4 = np.linspace(1,10,5)#1-10之间平均分5段
# 矩阵
a = np.array([[1,2,3],
[3,4,5]])
a1 = np.zeros((3,4)) #三行四列的 全零矩阵
a2 = np.ones((3,4))#三行四列的 全 1 矩阵
a3 = np.arange(12).reshape((3,4))#三行四列从0-11 的矩阵
a4 = np.linspace(1,10,5).reshape((2,3))#1-10之间平均分5段,并构成矩阵
随机生成一组数据-random的方法
1 无规律随机数
numpy.random.rand(4,2) #随机生成4行2列 无规律数据
rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
2 随机生成 满足 标准正态分布 数据
numpy.random.randn(4,2) #符合标准正态分布的 四行两列数据
3 随机生成整数
data = np.random.randint(10,20,(6,9)) #随机生成【10,20)区间的6行9列数据
print(pd.DataFrame(data))
4 符合均匀分布的随机数
np.random.uniform(0.5,1.0,n) #生成在【0.5,1.0)内n个随机数
基础运算
import numpy as np
a = np.array([10,20,30,40])
b = np.arange(0,4)
c = np.array([
[1,2],
[3,4]
])
d = np.arange(0,4).reshape((2,2))
#求最值
np.sum(a)
np.sum(a,axis=1) # 每一行 求和
np.sum(a,axis=0) # 每一列 中求和
np.min(a)
np.max(a)
#加减法
c1 = a - b
c2 = a + b
#三角函数
c3 = np.sin(a)
#矩阵计算
c4 = np.dot(c,d) # 矩阵相乘
c5 = d * c # 矩阵中对应元素 逐个相乘
np.mean(d) # 矩阵求平均值
np.median(d) # 中位数
np.sort(d) # 逐行排序
np.transpose(d) # 转置
np.clip(d,5,9) # 小于5 的数置为5 大于9的数置为9 ,中间的数保持不变
# 矩阵索引
np.argmin(d) # 矩阵中 最小值的 索引
np.argmax(d)
索引 矩阵遍历
import numpy as np
a = np.arange(3,15)
b = np.arange(3,15).reshape((3,4))
# 一维数组索引
a[3]
# 二维矩阵
b[2] #矩阵第三行
b[1][1] #第一行第一列
b[2,:] #第二行所有数
b[:,1] #第一列所有数
#遍历行列
for row in b : #默认遍历的是行
print(row)
for column in np.transpose(b) : #将b 转置后 遍历就是遍历的列
print(column)
#遍历每个元素
for item in b.flat:
print(item)
array 合并
import numpy as np
a = np.array([1,1,1])
b = np.array([2,2,2])
np.vstack((a,b)) # 列合并 为一个矩阵
#out:
# [[1 1 1]
# [2 2 2]]
print(np.hstack((a,b))) #行合并
#out
# [1 1 1 2 2 2]
array 分割
import numpy as np
a = np.arange(12).reshape((3,4))
print(np.split(a,2,axis=1)) #两列两列的切割
print(np.vsplit(a,3))#纵向分割成三块 纵向的绳子分割成三分
np.hsplit(a,3) #横向分割为三块
浅拷贝和深拷贝
import numpy as np
a = np.array([1,1,2])
b = a #浅拷贝 改变 a 的同时, b 也会改变
b = a.copy() # 深拷贝,改变 a 的同时, b 不会改变