欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器学习笔记(二)numpy用法

程序员文章站 2022-03-09 10:06:54
...

numpy

1, 导入numpy,如果没有就pip install numpy

import numpy as np

2, 生成numpy数组,传入一个列表

np.array()

3, numpy数组之间的加减乘除需要元素个数相同,不同会报错
4, n维数组,数学上将一维称为向量,二维称为矩阵,三维及以上称为多维向量

d2 = np.array([[1,2],[3,4]])
# 查看矩阵的形状
d2.shape  # (2,2)
# 查看矩阵的元素的数据类型
d2.dtype  # dtype('int32')
# 查看维数
d2.ndim  # 2
# 查看元素数量
d2.size  # 4
# 查看数组元素的长度(字节数)
d2.itemsize  # 4 

5, 广播
用于形状不同的数组之间的运算
满足1, 数组的某一维度等长
或者2, 其中的一个数组的维度为1
可以进行运算
情况1:

a = np.array([[1,2],[3,4]])
b = np.array([10,20])
# 他们的一维长度都是2
a * b  # array([[10, 40],[30, 80]])
# 这里将[10,20]自动转换为[[10,20][10,20]]

情况2:

a = np.array([[1,2],[3,4]])
b = 10
a * b  # array([[10, 20],[30, 40]])
# 这里将10自动转换为[[10,10],[10,10]]

6, 访问元素

a = np.array([[1,2],[3,4]])
# 访问第0行
a[0]  # array[1,2]
# 访问第0行第一个
a[0][1]  # 2
# 转化为一维数组
a = a.flatten()  # [1,2,3,4]
# 访问索引为1,2,3的时候不能直接使用数字索引
a[np.array([1,2,3])]  # array([2, 3, 4])

7,生成一个全是1的x行y列的矩阵

x,y = 2,1 
np.ones([x,y]) # [[1.],[1.]]数据类型为flote 

8,深拷贝浅拷贝

a = np.array([[1,2],[3,4]])
# 深拷贝,相当于一个快捷方式,原文件改变,新文件也改变
a1 = np.array(a)
# 浅拷贝,相当于一个新的文件,和原文件没有关系
a2 = np.asarray(a)
a[0][0] = 10
a1  # [[10,2],[3,4]]
a2  # [[1,2],[3,4]]

9,numpy中的一些方法

array1 = np.array([1,2,2])
array2 = np.array([[1,3,2,4,3,5],[1,5,4,3,3,4]])
# 去重
np.unique(array1)  # array([1,2]) 
np.unique(array2)  # array([1,2,3,4,5])
# 转置
array2.T  # array([[1, 1],[3, 5],[2, 4],[4, 3],[3, 3],[5, 4]])
# 标准差
np.std(array1)  # 0.4714045207910317
# 方差
np.var(array1)  # 0.2222222222222222
# 最大元素下标
np.argmax(array1)  # 1
# 最小元素下标
np.argmin(array1)  # 0
# 数组变形
array1.reshape([3,1]) # 产生新的变量,即不修改原值
# array([[1],[2],[2]])
array1.reshape([-1,1])  # 自动计算,此时-1相当于3
# array([[1],[2],[2]])
array1.resize([1,3])  # 不产生新的变量,在原值上修改

10, 从标准正态分布中返回一个或多个样本值

np.random.normal(loc,scale,size) # loc为均值,scale为标标准差,size为个数

11,其他

# 生成指定数量的等差数组linspace
# 生成0-10的三个数
np.linspace(0,10,3)  # array([ 0.,  5., 10.])
# 指定步长arange
np.arange(0,10,3)  # array([0, 3, 6, 9])
相关标签: 学习笔记 numpy