机器学习数据分析之Python中Numpy的常用方法

本文介绍了Python中的Numpy库在机器学习数据分析中的应用,包括IPython交互Shell的使用技巧、Numpy的多维数组对象ndarray、创建与初始化、索引与切片、数值运算以及统计函数。重点讲解了数组的乘法、转置、切片赋值、布尔索引和线性代数操作,展示了如何通过Numpy进行高效的科学计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IPython交互Shell使用技巧:
代码提示功能:

部分名字+tab

显示变量/对象具体信息:名称+

搜索命名空间:例如使用通配符:np.*aa*?

结果会出现所有中间有俩a的变量名,类,方法等

可以运行脚本代码:%run +路径,绝对路径即可

运行后,该脚本内全局变量,函数,import等都能在IPython界面使用了

执行时按ctrl+c可以中断代码

%paste:将剪切板中的代码作为整体执行

一些魔术命令:



numpypython中支持科学计算,矩阵操作的第三方库

numpy中的多维数组对象ndarray,实际上是把程序设计语言中的单个数的运算直接泛化到了批量运算,免去写循环的麻烦。其中元素必须是同类型的,有基本属性shape:显示各维度大小,dtype:说明数据类型

ndarray的创建:

1可以用一切序列型对象,比如list,或其他ndarray

2创建同时初始化:全0np.zeros(10)

多维:np.zeros((3,6))

1类似,np.ones()

自然数序列:初始化为0~N-1np.arange(N)

还可等差数列构建:np.arrange(-5,5,0.1)-5开始,每次加0.15,共100各数

3创建N阶单位矩阵:np.eye(N)

 

dtype可以在创建ndarray时人为指定,加参数即可。

dtype也可以认为的进行显式转换:调用arr.astype(newtype)

 

乘法:ndarray中的*并不是矩阵乘,而是对应位置元素分别乘。

nd数组与单个数字运算,则数组中每个元素都运算。

 

ndarray的索引与切片:

索引类似于数组。

一维时的切片:array[a:b]表示从a开始,切出b-a个元素,即a~b-1

数组的切片可以赋值,注意,这时并不是复制,而是类似于c++的引用:

arr_slice = arr5[5:8] 此时arr_slice并不是新数组,而是arr5片段的引用,若此时执行:

arr_slice=1,那么arr5[6]会变成1.numpy中称为“视图”

若想复制,可以用arr[5:8].copy()

 二维数组中,索引是取出一行。

类似的,在n维数组中,单值索引会得出n-1维数组,赋值时也是对这个子数组整体赋值

赋值后可用old_values值再赋值一次撤销操作

二维下的双切片:先切行,再切列:


数组名==值机理:值实际上相当于向量,其维数与数组相同,每一个元素对应判断相等。

例如:



这时要求布尔型数组长度必须跟被索引轴长度一致。

即取出了Ture位置对应的行,即第0行与第3行。当namesdata有现实意义上的对应关系时这种操作就类似于数据库了

 



数组转置:即矩阵转置 arr.T

转置提供的是一个视图,不进行任何复制操作

ndarray中有很多矢量化的运算函数,即把针对单个数的函数推广到了针对矩阵的:

np.sqrt(arr),每个元素求平方根

np.exp(arr),每个元素求指数函数

np.modf(arr),把浮点数的整数和小数分开,返回俩数组

xy轴都设为0-3,然后求所有坐标的x2+y2的平方根:(根据网格对函数求值)

arr7 =[0,1,2,3];

xs,ys=np.meshgrid(arr7,arr7)

printnp.sqrt(xs**2+ys**2)

关于np.random.randn:

np.random.randn(a,b)产生ab列的符合N(0,1)正态分布的数据

想产生(μ,x^2)的样本,那么x*np.random.randn(a,b)+μ即可

 

arr.mean():求平均数

arr.sum()求和

上面俩函数还可以填一个维度axis的参数,用于求该轴上的统计值,常用axis=0横轴,=1竖直轴

sum函数还能对bool函数求出true值的个数


numpy数组也可以用sort方法:

arr.sort()就是从小到大牌序所有数

多维数组还可以在一个轴向上进行牌序,传入维度参数即可



唯一化:np.unique(arr)返回去重后并且排序后的数组

查看是否包含:np.in1d(x,y)


两个矩阵xy相乘:x.dot(y)np.dot(x,y)

常用线性代数函数:




部分Demo:

# -*-coding:utf-8-*-
import pandas as pd
import tensorflow
import numpy as np
data1=[1,5,3.1]
arr1=np.array(data1)
arr2=np.array(arr1)
print arr1,arr2,arr1.dtype

data2=[[1,2,3,4],[5,6,7,83]]
arr3=np.array(data2,dtype=np.float64)
print arr3,arr3.shape,arr3.dtype

arr4=np.zeros((2,3))
print arr4

arr5=np.arange(10)
print arr5

arr6=np.eye(10)
print arr6,arr6.dtype

print arr5*arr5

print arr5[5:8]
arr_slice = arr5[5:8]
print arr_slice
#print arr6
print arr6[[1,3,5]]
print arr6[[1,3,5]].T
print np.dot(arr6[[1,3,5]],arr6[[1,3,5]].T)

arr7 =[0,1,2,3];
xs,ys=np.meshgrid(arr7,arr7)

print np.sqrt(xs**2+ys**2)

arr8 = np.random.randn(5,4)
print arr8

print arr8.mean(axis=0)









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值