-
原文链接:https://blog.csdn.net/weixin_43212535/article/details/122393250线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量),线性回归通常可以应用在股价预测、营收预测、广告效果预测、销售业绩预测当中。一元线性回归:基本概念:一元线性回归是分析只有一个自变量(自变量x和因变量y)线性相关关系的方法。一个经济指标的数值往往受许多因素影响,若其中只有一个因素是主要的,起决定性作用,则可用一元线性回归进行预测分析。数据集可以表示成{(x1,y1),(x2,y2),…,(xn,yn)}。其中,xi表示自变量x的第i个值,yi表示因变量y的第i个值,n表示数据集的样本量。当模型构建好之后,就可以根据其他自变量x的值,预测因变量y的值,该模型的数学公式可以表示成: python中展示:导入我们需要的包和相关库#引入sklearn库,使用其中的线性回归模块from sklearn import datasets,linear_model#引入train_test_split来把我们的数据集分为训练集和测试集from sklearn.model_selection import train_test_splitimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt# 创建数据集 比如我们现在有10行2列数据,第一列是身高,第二列是体重,通常做法:将原始数据切分时,将原始数据的80%作为训练数据来训练模型,另外20%作为测试数据,通过测试数据直接判断模型的效果,在模型进入真实环境前不断改进模型;data = np.array([[152,51],[156,53],[160,54],[164,55], [168,57],[172,60],[176,62],[180,65], [184,69],[188,72]]) # X,y分别存放特征向量和标签,这里边使用reshape的目的是data[:,0]是一个一维的数组,但后边模型调用的时候要求是矩阵的形式X,y = data[:,0].reshape(-1,1),data[:,1]# 训练集和测试集区分开# train_size=0.8的意思就是随机提取80%的数据作为训练数据X_train,X_test,y_train,y_test = train_test_split(X,y,train_size=0.8) # 实现线性回归算法模型regr = linear_model.LinearRegression()# 拟合数据,训练模型regr.fit(X_train,y_train)# score得到的返回结果是决定系数R平方值regr.score(X_train,y_train)决定系数R的平方值 = 1-u/vu = (y的实际值-y的预期值)的平方的求和v = (y的实际值-y的实际值的平均值)的平方的求和--输出结果R的平方值=0.963944147932503font = {'family':"SimHei",'size':20}plt.rc('font',**font)##训练数据plt.scatter(X_train,y_train,color='r')##画拟合线plt.plot(X_train,regr.predict(X_train),color='b')plt.scatter(X_test,y_test,color='black')# 测试数据plt.xlabel('身高')plt.ylabel('体重')plt.show() 下面让我们简单的做一个预测,加入身高是170的人,他的体重是多少那?np.round(regr.predict([[170]]),1)array([59.8]),可以看到170的人,经过我们的预测他的体重是59.8公斤。
-
python-spider的密码没有提供,无法登陆,分别尝试了左上角的华为云实验账号密码和云数据库密码,均与ecs服务器密码不符,没有找到对密码的说明。结果发现是右上角有个眼睛,不小心看错了。
-
原文链接:https://blog.csdn.net/qq_49821869/article/details/122388098一、Numpy的属性ndim 维度shape 形状dtype 类型size 大小array = np.array([[1,2,3], [4,5,6]])print(array)123[[1 2 3] [4 5 6]]12print(array.ndim) # 维度121print(array.shape) # 形状1(2, 3)1print(array.dtype) # 元素类型1int641print(array.size) # 大小161二、创建array指定数据属性创建一维数据、二维数据zeros 全0、 ones 全1、 empty 全接近于0、 arange 等差一维数组reshape 改变矩阵形状a = np.array([1,2,3],dtype=np.int32) # 指定数据类型print(a)12[1 2 3]1b = np.array([1,2,3],dtype=np.float) # 指定数据类型 print(b.dtype)12float641c = np.array([1,2,3]) # 一维数据print(c)12[1 2 3]1d = np.array([[1,2,3],[4,5,6]]) # 二维数据print(d)12[[1 2 3] [4 5 6]]12zero = np.zeros((2,3)) # 生成2行3列的全0矩阵print(zero)12[[0. 0. 0.] [0. 0. 0.]]12one = np.ones((3,4)) # 生成3行4列的全1矩阵print(one)12[[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]123empty = np.empty((3,3)) # 生成3行3列的全都接近于0(不等于0)的矩阵print(empty)12[[6.92430951e-310 4.67278860e-310 6.92414190e-310] [6.92414190e-310 6.92414190e-310 6.92414190e-310] [6.92414190e-310 6.92414190e-310 3.95252517e-322]]123e = np.arange(5) print(e)12[0 1 2 3 4]1f = np.arange(4,12)print(f)12[ 4 5 6 7 8 9 10 11]1g = np.arange(4,12,2)print(g)12[ 4 6 8 10]1h = np.arange(8).reshape(4,2) # 重新定义矩阵的形状print(h)12[[0 1] [2 3] [4 5] [6 7]]三、Numpy的运算‘+ - * / // ** % >’np.dot(arr1,arr2) == arr1.dot(arr2) 矩阵乘法arr1.T == np.transpose(arr1)arr1 = np.array([1,2,3])arr2 = np.array([4,5,6])print(arr1,arr2)123[1 2 3] [4 5 6]1print(arr1+arr2)1[5 7 9]1print(arr1-arr2)1[-3 -3 -3]1print(arr1*arr2)1[ 4 10 18]1print(arr1/arr2)1[0.25 0.4 0.5 ]1print(arr1**arr2)1[ 1 32 729]1print(arr1 // arr2)1[0 0 0]1print(arr1 % arr2)1[1 2 3]1print(arr1 + 1)1[2 3 4]1print(arr1 * 3)1[3 6 9]1print(arr1 > 3)1[False False False]1arr3 = np.arange(6).reshape(3,2)arr4 = np.arange(6).reshape(2,3)12np.dot(arr3,arr4) # 矩阵乘法1array([[ 3, 4, 5], [ 9, 14, 19], [15, 24, 33]])arr3.dot(arr4)1array([[ 3, 4, 5], [ 9, 14, 19], [15, 24, 33]])123print(arr3.T) # 矩阵转置1[[0 2 4] [1 3 5]]12print(arr3)1[[0 1] [2 3] [4 5]]123print(np.transpose(arr3))1[[0 2 4] [1 3 5]]12四、随机数生成及矩阵的统计np.random.random 0-1的随机数np.random.normal 符合正态分布的随机数np.random.randint(0,10,size=()) 生成从0到10的size形状的随机整数np.sum() 求和、np.mean() 求平均值 np.max() 求最大值、 np.min() 求最小值np.sort() 排序、np.sqrt() 开方、 np.median() 求中位数、 axis=0 0行1列np.argmin() 求最小值的下标、np.argmax() 求最大值下标arr1 = np.random.random((2,2)) # 生成2行2列从0到1的随机数print(arr1)12[[0.70322893 0.62660424] [0.10822154 0.70288038]]12arr2 = np.random.normal(size=(3,3)) # 生成3行3列的符合标准正态分布的随机数print(arr2)12[[ 0.27050106 0.66089326 0.05234379] [ 0.81437662 -0.41467658 2.49832908] [-0.17560416 0.42175065 -1.02400744]]123arr3 = np.random.randint(0,10,size=(4,3)) # 生成4行3列的从0到10的随机整数print(arr3)12[[4 1 9] [8 7 9] [9 1 9] [5 0 9]]np.sum(arr1) # 求和 == arr1.sum()12.14093509458232761np.min(arr1) # 求最小值 == arr1.min()10.108221541469485151np.max(arr1) # 求最大值 == arr1.max()10.70322892713526411np.sum(arr1,axis=0) # 对列求和1array([0.81145047, 1.32948463])1np.sum(arr1,axis=1) # 对行求和1array([1.32983317, 0.81110192])1np.argmin(arr1) # 求最小值的索引 从0开始121np.argmax(arr1) # 求最大值的索引101np.mean(arr1) # 求平均值 == np.sum(arr1) / arr1.size == arr1.mean()10.53523377364558191np.median(arr1) # 求中位数10.66474231298878931np.sqrt(arr1) # 开方 == arr1 ** 0.51array([[ True, True], [ True, True]])12np.sort(arr1) # 排序 每一行是升序1array([[0.62660424, 0.70322893], [0.10822154, 0.70288038]])12np.clip(arr1,0.5,0.6) # 小于0.5变成0.5 大于0.6就变成0.61array([[0.6, 0.6], [0.5, 0.6]])12五、Numpy索引索引arr1[1,2] == arr1[1][2]切片 [:,:] 逗号前面代表行,后面代表列遍历行、遍历列、遍历元素print(arr1)1[[0.62660424 0.70322893] [0.10822154 0.70288038]]12print(arr1[0]) 1[0.62660424 0.70322893]1print(arr1[0][1]) == print(arr1[0,1]) 10.70322892713526411print(arr1[:,1]) # 第二列1[0.70322893 0.70288038]print(arr1[1,1])0.7028803828361643for i in arr1: # 迭代行 print(i)[0.62660424 0.70322893][0.10822154 0.70288038]for i in arr1.T: # 迭代列 print(i)[0.62660424 0.10822154][0.70322893 0.70288038]arr1.reshape(1,-1)array([[0.62660424, 0.70322893, 0.10822154, 0.70288038]])for i in arr1.flat: # 迭代所有元素 print(i)0.62660424314141430.70322892713526410.108221541469485150.7028803828361643六、合并一维数据合并 np.vstack 垂直合并、 np.hstack 水平合并多维数据合并 np.concatenate((arr1,arr2)) # 默认垂直合并、np.concatenate((arr1,arr2),axis=1) # 水平合并增加一个新的维度np.newaxis变成nd数据 np.atleast_nd n可以为1、2、3、4…arr1 = np.arange(3)arr2 = np.arange(3)print(arr1,arr2)[0 1 2] [0 1 2]np.vstack((arr1,arr2)) # 垂直合并array([[0, 1, 2], [0, 1, 2]])np.hstack((arr1,arr2)) # 水平合并array([0, 1, 2, 0, 1, 2])np.concatenate((arr1,arr2)) array([0, 1, 2, 0, 1, 2])arr3 = np.arange(4).reshape(2,2) np.concatenate((arr3,arr3))array([[0, 1], [2, 3], [0, 1], [2, 3]])np.concatenate((arr3,arr3),axis=1) # 该方法不能对1维数据进行垂直合并array([[0, 1, 0, 1], [2, 3, 2, 3]])arr1.T # 一维数据不能转置array([0, 1, 2])arr1[np.newaxis,:] # 在行这个维度上增加一个维array([[0, 1, 2]])arr1[:,np.newaxis]array([[0], [1], [2]])np.atleast_2d(arr1)array([[0, 1, 2]])七、分割等分 np.split 0行1列不等分 np.array_split 0行1列垂直分np.hsplit、水平分np.vsplitarr1 = np.arange(12).reshape(3,4)print(arr1)[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]np.split(arr1,2,axis=1) # 竖直方向分割,平均为2份 1[array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])]12345np.split(arr1,3,axis=0) # 水平方向分割,平均为3份1[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]1np.split(arr1,3,axis=1) # 竖直方向分割,平均为3份1---------------------------------------------------------------------------TypeError Traceback (most recent call last)/opt/conda/lib/python3.6/site-packages/numpy/lib/shape_base.py in split(ary, indices_or_sections, axis) 866 try:--> 867 len(indices_or_sections) 868 except TypeError:TypeError: object of type 'int' has no len()During handling of the above exception, another exception occurred:ValueError Traceback (most recent call last)<ipython-input-112-2e738d9e1da7> in <module>----> 1 np.split(arr1,3,axis=1) # 水平方向分割,平均为3份<__array_function__ internals> in split(*args, **kwargs)/opt/conda/lib/python3.6/site-packages/numpy/lib/shape_base.py in split(ary, indices_or_sections, axis) 871 if N % sections: 872 raise ValueError(--> 873 'array split does not result in an equal division') 874 return array_split(ary, indices_or_sections, axis) 875 ValueError: array split does not result in an equal divisionnp.array_split(arr1,3,axis=1) # 竖直方向分割,不等分为3份1[array([[0, 1], [4, 5], [8, 9]]), array([[ 2], [ 6], [10]]), array([[ 3], [ 7], [11]])]np.vsplit(arr1,3) # == np.split(arr1,3,axis=0) # 水平方向分割,平均为3份1[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]1np.hsplit(arr1,2)# == np.split(arr1,2,axis=1) # 竖直方向分割,平均为2份 1[array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])]12345八、深浅拷贝Python是引用传递,默认内存共享arr1.copy() 深拷贝 完全独立开arr11array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])123arr2 = arr11arr2[0] = 0arr212array([[ 0, 0, 0, 0], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])123arr11array([[ 0, 0, 0, 0], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])123arr3 = arr1.copy() # 深拷贝1arr3[0] = 11arr31array([[ 1, 1, 1, 1], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])123arr11array([[ 0, 0, 0, 0], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
-
【功能模块】【操作步骤&问题现象】1、sparkstreaming对接kafka,应用使用scala里面,应用里面调用了python 有一些python的算法。2、提交spark任务后里面的算法跑在集群里,发现缺少numpy依赖,3、求助:在集群配置依赖仍然调不到,且在集群配置比较危险会影响其他服务环境,所以这种场景应该怎么创造spark程序运行的环境呢?【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法.对象:是类的实例化方法:类中定义的函数特殊的方法:__init__()当创建一个新实例时,都会自动运行它,加下划线是必要的,是为了区分默认方法和普通方法,如果不加那么在调用新实例时将不会自动调用这个方法。方法定义的形参self必不可少,而且必须定义在最前面,作用是指向实例本身的一个引用,让实例能够访问类中的属性和方法以self为前缀的变量可供类中的所有方法使用,可以通过类的任何实例来访问可以根据需求创建任意多的实例,条件是每个实例都储存在不同的变量中如果要编写的类是另一个现成的类的特殊版本,可以使用继承,一个类继承另一个类时,将自动获得另一个类的所有属性和方法,原有的类叫父类,继承父类所有的属性和方法,也可以自己定义新的方法特殊函数super能让子类顺利的调用父类的方法父类的重写:在子类中定义一个和父类中名字完全一样的方法,然后进行重写即可,在调用子类时使用了这个方法,那么将会显示出修改后的方法,但是在调用父类的这个方法时,仍然显示的是原来的方法内容,既这个修改内容仅仅在调用子类时是生效的:class Car: def __init__(self, make, model, year): self.ma = make self.mod = model self.ye = year self.gas = 100 def get_descriptive_name(self): long_name = f"{self.ye} {self.ma} {self.mod}" return long_name.title() def fill_gas_tank(self): print(f"The tank is only {self.gas} gas")class ElectricCar(Car): def __init__(self, make, model, year): super().__init__(make, model, year) def fill_gas_tank(self): print("This car doesn't need a gas tank!")my_car = ElectricCar('teals', 'model s', 2020)my_car.fill_gas_tank()car = Car('audi', 'A8L', 2021)car.fill_gas_tank()将实例用作属性:当类越来越长时,为了增加代码的可读性,尝试将一部分代码单独提取出来,单独作为一个类。可以将一个大类拆分成多个协调用工作的小类。提取出来后,要创建一个小类当做实例作为主类的属性
-
不同的编程语言会对我们的求职产生相当大的影响,但是目前哪种编程语言最受公司欢迎呢?Emsi Burning Glass收集并分析了数百万个招聘信息,以下是出现得最多的编程语言:图来源于Emsi Burning Glass如图所示, SQL 位居榜首,可见各大公司在招聘时往往倾向于能够熟练使用SQL的技术人员。比起Python、Java 和JavaScript等编程语言,SQL并非使用最广泛的语言。但是,之所以各大公司要求精通SQL,原因在于它能够用于管理和查询关系数据库,是数据操作的基础。Java位列第二位。最近推出的Java 17在性能上大幅度提高,同时稳定性和安全性也在不断升级。该语言为众多软件后端提供支持,其中包括Android应用程序和大数据分析等等。Burning Glass表示,这也是Java 开发人员工资较高的关键原因之一。第三名编程语言为Python。Python一直是一种非常流行的编程语言,如今逐步用于数据科学、机器学习和其他高度专业化的领域。开发者调查分析公司 SlashData表示,Python的全球开发者社区人数大约有1130万,并且仍在持续增长。文章来源:https://blog.csdn.net/csdndevelopers/article/details/122316758
-
【功能模块】【操作步骤&问题现象】按照论坛上面的连接示例(通过windows版本的python3连接)import psycopg2conn = psycopg2.connect(database="postgres", user="root",password="xxxx", host="xx.xx.xx.xx", port="25308")cursor = conn.cursor()cursor.execute("DROP TABLE if exists test_conn")cursor.execute("CREATE TABLE test_conn(id int, name text)")cursor.execute("INSERT INTO test_conn values(1,'haha')")cursor.execute("INSERT INTO test_conn values(2,'lala')")cursor.execute("update test_conn set name = 'xixi'")cursor.execute("delete from test_conn where id = 1")conn.commit()cursor.execute("select * from test_conn")rows = cursor.fetchall()for row in rows: print('id = ',row[0], 'name = ', row[1], '\n')cursor.close()conn.close()报错Traceback (most recent call last): File "C:/Users/xxxxx/Desktop/test1.py", line 3, in <module> conn = psycopg2.connect(database="postgres", user="root",password="***", host="xx.xx.xx.xx", port=25308) File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python310\lib\site-packages\psycopg2\__init__.py", line 122, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync)psycopg2.OperationalError: connection to server at "xx.xx.xx.xx", port 25308 failed: SSL error: sslv3 alert illegal parameterconnection to server at "xx.xx.xx.xx", port 25308 failed: FATAL: Invalid username/password,login denied.确认用户名和密码都是正确的【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
谈起贪吃蛇大家对贪吃蛇的概念就会很丰富像超级玛丽一样是我们在童年甚至现在也会玩的游戏今天咱们来谈一谈如何用pycharm利用python语言编写出贪吃蛇import copyimport random# 游戏模块import pygame首先我们需要带入这三个文件包 注意第三个是导入我们需要的pygame一个依赖库才能实现贪吃蛇的操作代码如果没有第三行代码:import pygame的话就会出现如下错误提示:如何解决呢?如下图可以在当前的提示下划线处利用快捷键alt+回车或则点击左边红色灯泡下的选项点击安装即可第一步 创建背景食物的随机生成地点:x = random.randint(10, 490)y = random.randint(10, 490)food_point = [x, y]最多设置500*500的背景大小也可以设置其他数据的背景大小根据自己需求来定食物的模型腰随机生成用到了random的随机函数 最后将获取到的随机函数的x和y值传递给当前屏幕上随机显示的一个点是由x和y来确定的第二步 给蛇本身设置大小模型及上下左右的方位和初始的小蛇方位这里直接生命我们定义的函数 分为四个方位分别是:1)move_up 2)move_down 3)move_left 4)move_right这四个方位可以给小蛇在刚开始时初始化一个开始的方位move_up = Falsemove_down = Falsemove_left = Truemove_right = True比如这四行代码代表的就是让小蛇在初始化开始时是往右侧方向去设置小蛇的模型:snake_list=[[10,10]]第三步 设置画布 初始化游戏组件 身子的移动 帧的变化等等pygame.init() #初始化游戏的组件 init在python中代表初始化的意思设置画布的大小需要配合上面配置的大小同样设置为500*500的样子代码如下:pygame.init()screen = pygame.display.set_mode((500, 500))给我们的游戏起个名字叫做devcloud贪吃蛇大作战title = pygame.display.set_caption('DevCloud贪吃蛇游戏')设置游戏的时钟clock=pygame.time.Clock()while true: #当循环为真时设置帧是30fps 同时将背景的颜色填充为白色clock.tick(30)screen.fill([255,255,255])如何控制贪吃蛇的方向变化呢?通过获取键盘的时间来响应for event in pygame.event.get(): #遍历循环事件在pygame的游戏模块事件上if event.type==pygame.KeyDown:#向下移动if event.key==pygame.K_Down:#执行咱们初始化时设置的四个方向按钮move_up = Falsemove_down = Truemove_left = Falsemove_right = False同理其余的三个如下所示:if event.key == pygame.K_UP: move_up = True move_down = False move_left = False move_right = Falseif event.key == pygame.K_LEFT: move_up = False move_down = False move_left = True move_right = Falseif event.key == pygame.K_RIGHT: move_up = False move_down = False move_left = False move_right = True蛇又分为蛇的身子和头部:身子的移动算法为:蛇的模型长度-1 Len(snake_list)-1等于当前的蛇的长度:snake_len=len(snake_list)-1while snake_len>0时执行 up down left 和right 这四类代码while snake_len > 0: snake_list[snake_len] = copy.deepcopy(snake_list[snake_len - 1]) snake_len -= 1if move_up: snake_list[snake_len][1] -= 10 if snake_list[snake_len][1] < 0: snake_list[snake_len][1] = 500if move_down: snake_list[snake_len][1] += 10 if snake_list[snake_len][1] > 500: snake_list[snake_len][1] = 0if move_left: snake_list[snake_len][0] -= 10 if snake_list[snake_len][0] < 0: snake_list[snake_len][0] = 500if move_right: snake_list[snake_len][0] += 10 if snake_list[snake_len][0] > 500: snake_list[snake_len][0] = 0绘制食物?food_rect=pygame.draw.circle提供的画出圆形 背景颜色设置俩个255为黄色 最后一个参数设置圆的大小 可以根据自己看不看的清自己调整啊 我这里设置为10 代码如下:food_rect = pygame.draw.circle(screen, [255, 255, 0], food_point, 10)最后的俩个步骤:1)如何检查食物和蛇发生碰撞 碰撞后重新生成食物2)什么情况下游戏结束?利用循环来实现食物和蛇发生碰撞的检测方法定义一个snake_rect=[]for snake_pos in snake_list:snake_rect.append#在某位追加一个圆形 只要是蛇吃了一个就追加一个所以用到for循环代码:snake_rect.append(pygame.draw.circle(screen, [255, 255, 0], snake_pos, 5))蛇把食物吃了的检测方法:if food_rect当前食物的位置.利用collidepoint函数(检测一个点是否包含在一个对象内)后面的括号中加入当前蛇的位置(snake_pos):如果是就用snake_list.append(food_point)追加到一个食物同时腰生成一个随机的食物在随机的位置代码如下:if food_rect.collidepoint(snake_pos): snake_list.append(food_point) # 重新生成食物 food_point = [random.randint(10, 490), random.randint(10, 490)] break最后一步了写完睡觉了!蛇吃到自己后结束游戏刚开始游戏时蛇的头部就是他的身子snake_head_rect= snake_rect[0]count=len(snake_rect)获取到当前蛇的总长度利用while循环当count>1:时 蛇的头部可能和身子的任一节点发生碰撞就需要判断下if snake_head_rect.colliderect(snake_rect[count - 1]):满足这个条件给个提示 自己迟到自己了游戏结束同时pygame.quit()最后都结束了将推出循环count-=1利用python提供的函数来显示出我们绘制的东西 pygame.display.update()收工!晚安! 探讨的小伙伴下方留言哦!献上结果图:
-
1、通常情况下,在ipynb文件中,使用!pip install package_name==package_version方式即可安装。如下图所示:2、如果在ipynb文件中使用pip安装失败,可以尝试在terminal中使用pip命令进行安装。因为terminal里安装会比ipynb中安装更稳定些,有时候同一个模块,在ipynb中用pip安装失败,terminal中却是可以的。步骤如下:1)进入到notebook页面,参考下图打开terminal;2)执行conda info -e命令,将看到已安装的anaconda虚拟环境;3)激活一个你所需要的虚拟环境,比如执行命令:source activate /home/ma-user/anaconda3/envs/Pytorch-1.0.0;4)执行命令:pip install torch==1.1.0(如果某些模块的下载速度较慢,可以使用清华源进行安装,如pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch==1.1.0);3、某些Python库的安装会涉及编译过程,只能通过源码方式进行安装如果所安装的Python库涉及到编译过程,直接使用pip安装可能会导致失败,这是因为ModelArts上出于安全考虑,未开放用户的完整root使用权限,只有创建软连接的命令菜可以获得root权限,所以只能通过源码方式安装涉及编译过程的Python库。4、新安装的Python模块如何保证在Notebook重启后不丢失?ModelArts Notebook是以容器方式运行的,因此容器在重启后,容器镜像就恢复成之前一样的了。在Notebook容器镜像中,挂载了一个云硬盘在/home/ma-user/work目录下,该目录下的内容是在Notebook重启后不丢失的,因此可以通过如下方法将Python模块安装在该目录下:1)进入到notebook页面,打开terminal;2)执行conda info -e命令,将看到已安装的anaconda虚拟环境;3)激活一个你所需要的虚拟环境,比如执行命令:source activate /home/ma-user/anaconda3/envs/Pytorch-1.0.0;4)执行命令:cd work; mkdir site-packages5)执行命令:pip install numpy==1.18.0 --target=/home/ma-user/work/site-packages,这条命令就将numpy模块安装到了/home/ma-user/work/site-packages目录下,Notebook重启后,该模块就不会丢失了。但是,要注意原来的numpy版本(比如1.19.1版本)仍然存在,仍然安装在/home/ma-user/anaconda3/envs/Pytorch-1.0.0/lib/python3.6/site-packages/目录下,这时候就出现了多个numpy版本共存的状态。如果你打开python解释器,执行import numpy as np和np.version,看到的版本仍然是1.19.1,那么怎样才能用上新安装的1.18.0版本呢?参考如下方法就可以了:import sys sys.path.insert(0, '/home/ma-user/work/site-packages') import numpy as np print(np.__version__) # 1.18.0 print(np.__file__) # /home/ma-user/work/site-packages/numpy/__init__.py
-
AR502H 容器内的python 怎么读取 /dev/di0状态,cat /dev/di0 获取到的一直是不断循环的 @^@^
-
通过为数几周的Python学习,使我对编程的了解越发深入,很感谢华为官方此次举办的Python学习挑战赛,通过学与练的结合让知识掌握起来不那么生疏,也能更快的上手。python是一门非常有潜力的高级语言,在字符串上的处理,相对其他程序有更加便利,而python的库也非常丰富,得益于它强大的库,让编程变得不那么艰难。虽然我对python的学习仅仅只是它的冰山一角,但python的强大,深深地吸引着我,我希望自己能在不断地学习中,将python学习的更上一层楼。
-
我的华为云账号:huawei_9000学习心得:python相对于其他的编程语言简单一些,实用性也很强,可以用于很多的领域。比如:互联网、软件开发和脚本运行等方面。如果能较好的掌握python这门编程语言,就能多拥有一项技能,对以后的工作和学习很有帮助。上课视频老师讲解的挺好的,很详细,每个视频不是很长,上课不会感到疲劳,不过有一点不方便的就是,如果进度条能够记住观看时间就好了,这样更方便学习。经过这次的python的学习大赛,或多或少的了解和学习到了一些python的基本知识,之前借阅过python的有关书籍,不过并没有怎么看。这次学习有证书、有学分,还有礼品,激发了我学习的小动力。看完教学视频后马上做题可以巩固一下刚学到的知识,加强记忆。可是感觉过几天又记忆模糊了,看来学习还得是“温故而知新”。网上有不少的言论说学习python“从入门到入土”,个人觉得是他们没有坚持吧,知难而退。学习本就不是一蹴而就的,要坚持坚持再坚持。我爱python!
learn365天的1.01次方
发表于2021-12-19 21:15:13
2021-12-19 21:15:13
最后回复
lte网络工程师
2021-12-21 15:48:12
6283 1 -
我的华为云账号:huawei_9000学习心得:python相对于其他的编程语言简单一些,实用性也很强,可以用于很多的领域。比如:互联网、软件开发和脚本运行等方面。如果能较好的掌握python这门编程语言,就能多拥有一项技能,对以后的工作和学习很有帮助。上课视频老师讲解的挺好的,很详细,每个视频不是很长,上课不会感到疲劳,不过有一点不方便的就是,如果进度条能够记住观看时间就好了,这样更方便学习。经过这次的python的学习大赛,或多或少的了解和学习到了一些python的基本知识,之前借阅过python的有关书籍,不过并没有怎么看。这次学习有证书、有学分,还有礼品,激发了我学习的小动力。看完教学视频后马上做题可以巩固一下刚学到的知识,加强记忆。可是感觉过几天又记忆模糊了,看来学习还得是“温故而知新”。网上有不少的言论说学习python“从入门到入土”,个人觉得是他们没有坚持吧,知难而退。学习本就不是一蹴而就的,要坚持坚持再坚持。我爱python!
-
【功能模块】数据导入【操作步骤&问题现象】客户这里使用python+jdbc方式连接DWS,现在想在python中使用copy方式进行数据批量入库,请问这种方式如何实现,最好有示例代码【截图信息】【日志信息】(可选,上传日志内容或者附件)
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签