机器学习-py工具包

机器学习-Numpy工具包

1.概述

导入包:

import numpy as py

先转换为numpy.ndarray,在进行加1操作

例如:

array = [1,2,3,4,5]
array +1

这样无法进行矩阵所有元素加1的操作,正确的操作如下:

array = np.array([1,2,3,4,5])
print (type(array))
array2 = array + 1
array2

这样我们就可以将array的数组内的所有元素加1后给array2这个数组,数组是最底层可以进行一些操作,对于list是不可以的。

数组可以相加,但是要求元素的个数相同,例如:

array2 + array
array2 * array

这样就是对应元素相乘或相加即可

也可以取出某一个元素,直接应角标即可。

元素个数的操作如下:

array.shape

二维矩阵

np.array([[1,2,3],[4,5,6]])

查大小和一维一样

ndarray结构来说,里面的所有元素必须是同一类型的,如果不是的话则会自动的向下转换

ndarray基本属性操作

type(名称)
tang_array.dtype
tang_array.itemsize
tang_array.ndim 代表维度
tang_array.fill(0)

索引与切片

tang_list=[1,2,3,4,5]
tang_array = np.array(tang_list)
tang_array[0]

tang_array[1:3] 从左取到右,不包括右
tang_array[-2:] 从后数开始取,什么都没写,取所有的,此例子是从倒数第二个开始取,取到最后

矩阵

tang_array = np.array([[1,2,3],[4,5,6],[7,8,9]])
tang_array.shape 代表矩阵的大小
tang_array.size  代表矩阵元素的个数
tang_array.ndim  代表矩阵的维度

tang_array[1,1]=10 将第一行第一列的值变为10

tang_array[1] 取出第一行

tang_array[:,1] 取所有的第一维的第二位

tang_array2 = tang_array
tang_array2[1,1]=100
发现都改变了,做等号是相当于同一个区域

tang_array2 = tang_array.copy() 这样可以实现赋值操作,改2不改1

生成数据

tang_array = np.arrange(0,100,10) 从0到100,以10位间隔,不包括100

mask = np.array([0,0,0,0,0,0,1,1,1,1],dtype=bool)  设置数据类型

tang_array[mask] 拿出数组里的不同类别

random_array = np.random.rand(10) 打印10个随机值

mask = random_array > 0.5 输出是true或false

tang_array = np.array([10,20,30,40,50])
tang_array > 30

np.where(tang_array) > 30 所有满足的索引即位置

tang_array[np.where(tang_array > 30)]

数据类型

tang_array = np.array([1,2,3,4,5],dtype = np.float32)

tang_array = np.array([1,10,3,5,'str'],dtype=np.object) 出现字符串不能指定int或float类型

tang_array.astype(np.float32) 改变数据类型

数值计算

import numpy as np
tang_array = np.array([[1,2,3],[4,5,6]])

np.sun(tang_array) 矩阵求和

指定维度:np.sum(tang_array.axis = 0) 0竖着 1横着

tang_array.min(axis = 0) 取最小值

tang_array.max()  取最大值

tang_array.argmin()  找最小值的索引

tang_array.argmin(axis = 0)  找最小值的索引

tang_array.argmax()  找最大值的索引

tang_array.mean()

tang_array.std() 标准差

tang_array.var() 方差

tang_array.clip(2,4)  从2开始到4结束,所有小于2变为2,大于4的变为4

tang_array.round () 四舍五入

tang_array.round (decimals = 1) 保留小数

排序操作

import numpy as np
tang_array = np.array([[1.5,1.3,7.5],[5.6,7.8,1.2]])

np.sort(tang_array) 按照每一行的从小到大

np.sort(tang_array,axis = 0) 按照列从小到大

np.argsort(tang_array)  排序的索引

tang_array = np.linspace(0,10,10) 从a开始到b截止,构建10个数据

values = np.array([2.5,6.5,9.5]) 

np.searchsorted(tang_array ,values)  返回结果是在的位置

tang_array = np.array([[1,0,6],[1,7,0],[2,3,1],[2,4,0]])

index = np.lexsort([-1*tang_array[:,0],tang_array[:,2]]) 降序默认为-1 第一列降序第三列升序

数组形状

import numpy as np
np.array = np.arange(10)

tang_array.shape  元素个数

tang_aray.shape = 2,5  元素变成2*5的矩阵

tang_array.reshape(1,10)

元素个数不能变 tang_aray.shape = 3,4 是不可以的

tang_array = np.arange(10)
tang_array.shape
tang_array = tang_array[np.newaxis,:] 加维度

tang_array = tang_array.squeeze() 压缩

tang_array .transpose() 转置

a = np.array([[123,456,789],[3214,456,134]])
b = np.array([[1235,3124,432],[43,13,134]])
c = np.ocncatenate((a,b)) 
将a和b在一起,b连在a的后面

c = np.ocncatenate((a,b),axis = 1) 横着进行拼接

a.flatten 拉长矩阵 

数组生成

import numpy as np
np.array([1,2,3])

np.arange(l,r,k) 从l开始到r结束以k为间隔增加,不含r

np.logspace(0,1,5)

np.zeros(3) 3位向量维度

np,zeros(3,3)

np.ones((3,3)) * 8 全是8

a = np,empty(6)

a.fill(1)

np.zeros_like(tang_Array)  构造一个相同的维度

运算

import numpy as np

x = np,array([5,5])
y = np.array([2.2])

np.mulitiply  对应元素相乘

np.dot(x,y) 是1维的时候执行的是內积计算,传进去的是二维的话就是矩阵乘法计算

x = np.array([1,1,1,4])
np.logival_and(x,y)
np.logival_or(x,y)
np.logival_not(x,y) &|!操作

随机模块

import numpy as np

np.random.rand(3,2) 随机构造一个3*2的矩阵

np.random.randint(10,size = (5,4))

np.random.random_sample()

np.random.randint(0,10,3)

mu,sigma = 0,0.1
np.random.normal(mu,sigma,10) 高斯

np.set_printoptions(precision = 2) 精度

np.random.shuffle(tang_array)  数据打乱

np.random.seed(100)  随机的种子

读写模块

data = np.loadtxt('tang.txt')

data = np.loadtxt('tang.txt',delimiter = ',',skiprows  = 1)

读取array结构

tang_array = np.array([[1,2,3],[4,5,6]])
np.save('tang_array.npy',tang_array)

tnag = np.load('tang_array.npy')

tang_array2 = np.arange(10)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值