学习笔记之numpy库
1.简介与作用
NumPy库用于对大量高维度数组与矩阵的运算,具有大量的对数组运算的数学函数。因此对于机器学习必不可少
2.np使用
2.1导入numpy库,并命名为np:
import numpy as np
2.2创建数组
-
直接通过列表创建各个维度的列表
以二维为例
np.array([(1, 2, 3), (4, 5, 6)])
array([[1, 2, 3], [4, 5, 6]])
-
full函数创建任意维度数组并填充任意数字
import numpy as np a = np.full((2,5,4),3) print(a)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHieovVS-1666668757314)(https://gitee.com/sansejindeyihan/images/raw/master/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20221022150145.jpg)]
-
创建随机数组
a=np.random.rand(2,3,4)
[[[3.71953356e-01 2.98125629e-01 6.35245652e-01 1.45150249e-01]
[7.85047262e-01 6.01131278e-01 3.45234466e-01 8.20691705e-02]
[4.28491379e-01 2.55677570e-04 3.93174460e-01 7.65555842e-01]][[1.42879641e-01 6.76978332e-01 2.04327525e-01 4.77823107e-01]
[7.13667163e-01 1.89743202e-01 6.40582503e-01 9.32597250e-01]
[3.86566849e-01 2.36095948e-01 3.38541578e-01 2.23460120e-01]]]np.random.randint(8,size = (2,3,4))
[[[5 7]
[2 2]
[3 6]][[7 4]
[4 7]
[3 4]][[3 5]
[0 6]
[5 2]][[7 3]
[7 4]
[2 6]]] -
创建单位矩阵
np.eye(3)
[[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]] -
创建二维等差数组:
np.arange(6).reshape(2, 3)
[[0 1 2]
[3 4 5]]
2.3数组运算
-
sum
a = np.array([(1,2,3),(4,5,6)]) np.sum(a) np.sum(a,axis=1)#求每一行的和 np.sum(a.axis=0)#求每一列的和
10
[6,15]
[5,7,9]
-
tile
c = np.array([[3,4,5],[6,7,8]]) d = np.tile(c,(2,3))列的方向上重复2次,行3次 f = np.tile(c,(3,2))列的方向上重复3次,行2次
[[3 4 5]
[6 7 8]]
[[3 4 5 3 4 5 3 4 5]
[6 7 8 6 7 8 6 7 8]
[3 4 5 3 4 5 3 4 5]
[6 7 8 6 7 8 6 7 8]]
[[3 4 5 3 4 5]
[6 7 8 6 7 8]
[3 4 5 3 4 5]
[6 7 8 6 7 8]
[3 4 5 3 4 5]
[6 7 8 6 7 8]] -
argsort
将数组从小到大排序,返回排序后的的数原来在各自行或列的索引值
-
二维数组运算在相应位置进行运算
-
矩阵运算np提供了dot()函数
-
如果使用 np.mat 将二维数组准确定义为矩阵,就可以直接使用 * 完成矩阵乘法计算:
A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) np.mat(A) * np.mat(B)
[[19,22],
[43,50]] -
转置矩阵
A.T
[[1,3],
[2,4]]
2.4索引的使用
a = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
-
取某个确定值
a[1,2]#第二行第三列的数
-
取出某个范围的值
# 冒号表示所取的范围,跟列表的索引用法一样, # 逗号用来区分每个维度,下面的代码表示取倒数第二行到最后一行, 第二列到第三列 a[-2:, 1:3]
[[ 6, 7],
[10, 11]] -
给某个范围的数进行运算
# 给a数组的第二列上的每个数加上10
a[np.arange(3), 1] += 10
a
[[ 1, 12, 3, 4],
[ 5, 16, 7, 8],
[ 9, 20, 11, 12]]
- 获取数组中大于或小于某个确定值的数值
b = a[a > 10]
b = a > 10
[11,12]
[[False False False False]
[False False False False]
[False False True True]]
2.5元素数据类型
-
使用dtype函数查看数组的数据类型
a = np.array([1.1, 2.2]) a.dtype
dtype(‘float64’)
a = np.array([1.1, 2.2], dtype = np.int64) # 将数据类型转换为整数,直接去掉小数部分
[1,2]
-
使用astype转换数据类型
a = np.array([1.1,2.2,3.3]) b = a.astype(int)
[1 2 3]
a = np.array(['1.2', '1.3', '1.4'], dtype = np.string_) b = a.astype(np.float)#不知道有没有方法可以直接转为数值型 c = b.astype(int)
[1.2 1.3 1.4]
[1 1 1]
])
b = a.astype(int)> [1 2 3]
a = np.array([‘1.2’, ‘1.3’, ‘1.4’], dtype = np.string_)
b = a.astype(np.float)#不知道有没有方法可以直接转为数值型
c = b.astype(int)> [1.2 1.3 1.4] > [1 1 1]