Ray 学习笔记,温习python

本系列是作者用 python 学习 Ray 框架的笔记。 Ray 是 UC berkley 提出的分布式机器学习。sklearn 是运行在单机上的机器学习,虽然支持多线程,但分布式并不支持。在开始学习Ray之前,先温习一下Python的基本知识。本文写于2021年3月12日。

1. Array

   a = np.ones(3) 可以生成array。

a = np.ones(3)

print("a is {0}".format(a))
> a is [1. 1. 1.]
print("type of a is {0}".format(type(a)))
> type of a is <class 'numpy.ndarray'>

   或者:

   b = np.array([2,3,4])

b = np.array([3,4,6])

print("b is {0}".format(b))
> b is [3 4 6]
print("type of b is {0}".format(type(b)))
> type of b is <class 'numpy.ndarray'>

   变量b是array,是从list [ 2, 3, 4] 转换而来,array 不能直接通过以下方式生成。

a1 = [1.0 1.2 1.4]  

2. list

    array 可以转换成为 list,也可以直接生成list。请注意 array 和 list 的区别。在print命令中,array的元素分隔号是空格,list的元素分隔号是逗号。array 和 list 是两种不同的变量。有些python的框架的运算只支持一种变量,比如 list。所以区分 array 和 list 很重要。

    c = np.ones(3).tolist()

c = np.ones(3).tolist()

print("c is {0}".format(c))
> c is [1.0, 1.0, 1.0]
print("type of c is {0}".format(type(c)))
>type of c is <class 'list'>

    或者直接:

    d = [6, 9, 10]

d = [6,8,9]

print("d is {0}".format(d))
> d is [6, 8, 9]
print("type of d is {0}".format(type(d)))
> type of d is <class 'list'> 

 

3. array 和 list 的转换

# array 转换为 list
e = np.ones(3).tolist()
print("e is {0}".format(e))
> e is [1.0, 1.0, 1.0]
print("type of e is {0}".format(type(e)))
> type of e is <class 'list'>

# list 转换为  array
f = np.array([3, 9, 10]) 
print("f is {0}".format(f))
> f is [ 3  9 10]
print("type of f is {0}".format(type(f)))
> type of f is <class 'numpy.ndarray'>
 

3. array 和 list 的操作

对于 array和list,numpy 都可以对这两个变量进行操作运算。比如 np.mean 操作,我们来看一下区别:

先来看看ndarray 的np.mean,注意不管是 axis=0 (列操作) 和 axis=1 (行操作),结果都是1维数组。

na = np.ones((2,3))

print("na is: {0}".format(na))
>na is: [[1. 1. 1.]
         [1. 1. 1.]]

naMeanPerColumn = np.mean(na,axis=0)
print("naMeanPerColumn is: {0}".format(naMeanPerColumn))
> naMeanPerColumn is: [1. 1. 1.]
print("type of naMeanPerColumn is: {0}".format(type(naMeanPerColumn)))
> type of naMeanPerColumn is: <class 'numpy.ndarray'>
print("naMeanPerColumn's shape is: {0}".format(naMeanPerColumn.shape))
> naMeanPerColumn's shape is: (3,)


naMeanPerRow = np.mean(na,axis=1)
print("naMeanPerRow is: {0}".format(naMeanPerRow))
> naMeanPerRow is: [1. 1.]
print("type of naMeanPerRow is {0}".format(type(naMeanPerRow)))
> type of naMeanPerRow is <class 'numpy.ndarray'>
print("naMeanPerRow's shape is: {0}".format(naMeanPerRow.shape))
> naMeanPerRow's shape is: (2,)

再来看看list,列操作 axis=0, np.mean后,matrix是1行3列的,行操作后,axis=1,np.mean后,matrix是2行1列的,类型没有变化,都是matrix。

oa = np.matrix([[1,1,1],
                [1,1,1]])


oaMeanPerColumn = np.mean(oa,axis=0)
print("oaMeanPerColumn is: {0}".format(oaMeanPerColumn))
> oaMeanPerColumn is: [[1. 1. 1.]]
print("type of oaMeanPerColumn is: {0}".format(type(oaMeanPerColumn)))
> type of oaMeanPerColumn is: <class 'numpy.matrix'>
print("oaMeanPerColumn's shape is: {0}".format(oaMeanPerColumn.shape))
> oaMeanPerColumn's shape is: (1, 3)

oaMeanPerRow = np.mean(oa,axis=1)
print("oaMeanPerRow is: {0}".format(oaMeanPerRow))
> oaMeanPerRow is: [[1.]
                    [1.]]
print("type of oaMeanPerRow is {0}".format(type(oaMeanPerRow)))
> type of oaMeanPerRow is <class 'numpy.matrix'>
print("oaMeanPerRow's shape is: {0}".format(oaMeanPerRow.shape))
> oaMeanPerRow's shape is: (2, 1)

ndarray 和 list的这些细微差别,请别忽视。

 

 

 

课程介绍:本课程旨在介绍Python Ray框架的基本概念、核心组件和应用,帮助学员理解并掌握Ray在分布式计算领域的应用,并在实际工作和生活中获得职业加成和思维提升。教学设计:本课程采用系统化的教学设计,结合理论讲解和实际案例演示,以帮助学员全面理解Ray的工作原理和核心特性。课程内容根据逻辑顺序进行组织,从基础概念到高级应用,循序渐进地引导学员掌握Ray的使用技巧和最佳实践。内容特色:重点介绍Ray的任务并行模型、对象存储和Actor模型,让学员理解并运用这些特性进行高效的分布式计算。强调实际应用案例,展示Ray在分布式机器学习、强化学习、推荐系统等领域的成功应用,激发学员的创造力和应用思维。讲解方式:课程讲解采用简洁明了的语言,结合图示和示例代码,帮助学员轻松理解和掌握Ray的概念和使用方法。通过实际案例演示,学员可以看到Ray在实际项目中的应用场景和效果,进一步加深理解。与其他同类课程的差异化:本课程专注于Python Ray框架的介绍和应用,注重深入讲解任务并行、对象存储和Actor模型等核心概念。通过实际案例和应用场景的讲解,将Ray的理论知识与实际应用相结合,帮助学员将所学知识应用到实际工作和生活中。课程收益:     参与本课程后,学员将获得以下收益:职业加成:掌握Ray的分布式计算能力,提升在职场上解决复杂问题和处理大规模数据的能力。思维提升:理解任务并行、对象存储和Actor模型的思维模式,培养分布式思维和并发编程的能力。实际应用:通过实际案例演示和练习,学员将能够将Ray应用于实际工作项目中,提高工作效率和解决问题的能力。通过本课程的学习,您将掌握Python Ray框架的核心概念和应用,获得在分布式计算领域的专业知识,以及在实际工作和生活中获得的职业加成和思维提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值