python矩阵

MATLAB中调用Python及其相关库(以igraph和numpy为例)

℡╲_俬逩灬. 提交于 2020-02-24 20:26:58
MATLAB是一款数值和矩阵计算软件,兼有强大的时域系统以及电力仿真Simulink模块,这使得MATLAB在工程领域有着难以取代的地位。不过受限于面向过程的开发逻辑,较大的体积和繁琐的安装、破解流程,以及正版昂贵的特性,加之并不太活跃的官方以及社区支持,对于普通用户和数据分析用户,以及开发项目的纯程序员一直不友好,MATLAB在编程语言界的地位也一直不太高,且有逐年下降的趋势。相比之下,Python具有体积小巧,第三方库包多,社区数量多且用户活跃度高的优点,许多大学和机构都有Python的支持和开发项目。Python也由于其igraph包丰富的绘图能力而被许多视觉处理以及图论方向的学者青睐。不过Python对于矩阵和向量运算的格式要求较高,即便是数值矩阵计算模块numpy也不如Matlab灵活,运算速度也不如MATLAB快。不过这两种语言同为脚本语言,语法上也有诸多的相似,精通一种语言的人上手另一种起来还是相对较快的。 出于各种考虑,Python和MATLAB中都已经添加了对方的函数接口,可以在MATLAB脚本中直接调用Python函数,Python代码中也可以直接调用MATLAB函数和变量,其便捷程度几乎与直接在Python IDLE或是MATLAB工作区中调用一样。为了结合两种编程语言在工程领域和非工程项目领域各自的优点,学习调用对方函数的方法是很有必要的。

主成分分析详解以及python实现

China☆狼群 提交于 2020-02-22 22:33:41
主成分分析的基本概念 主成分分析(Principal Component Analysis,PCA)是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。 主成分分析的意义 对于一组数据X,存在以下特征{x1,x2,x3},这些特征之间可能存在一些关联性,主成分分析就是利用代表数据之间关联性的协方差矩阵来去除数据的关联性,找到一组数据中最关键的要素。 举一个简单的例子,比如对于一组深海鱼的数据,有身长,体重,游速,体温等等。但是如果我们用这些数据来描述一条深海鱼,那就过于复杂了。显然,即使凭借我们从先验的感官中,就可以看出鱼的身长和体重这两组数据是有高度重合性的,身长长的鱼类体重必然沉。那么我们可不可以把这两种鱼类特征合并到一起呢。因为对于数据的分析而言,少了一个数据,就让整数据的空间下降了一个维度,这是十分必要的。 主成分分析用到的数学工具 协方差矩阵 协方差矩阵是利用标准化过后特征矩阵的转置乘以它本身来得到的,它是一个对角矩阵,用来表示特征与特征之间的关联性。 特征值与特征向量 一个矩阵的特征向量表示在乘以这个矩阵后只发生长度变化而不发生方向变化的向量,而特征值是这些向量乘以矩阵后的变化的程度。因此,求矩阵的特征向量,本质上是将矩阵分解为相互独立正交的向量,而特征值是这些向量对于矩阵本身影响的重要程度

Python练习——矩阵运算

孤人 提交于 2020-02-20 05:42:06
Python练习——矩阵运算 给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。 输入样例: 4 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 输出样例: 35 分析: 根据题意可推导出: 在副对角线上的点:i+j=n-1 在最后一列上的点:j=n-1 在最后一行上的点:i=n-1 所以只要不满足上述条件即可。 n = int ( input ( ) ) a = [ ] for i in range ( n ) : l = list ( map ( int , input ( ) . split ( ) ) ) a . append ( l ) sum = 0 for i in range ( n ) : for j in range ( n ) : if i + j != n - 1 and i != n - 1 and j != n - 1 : sum += a [ i ] [ j ] print ( sum ) 来源: CSDN 作者: linjiayina 链接: https://blog.csdn

python机器学习:推荐系统实现(以矩阵分解来协同过滤)

我们两清 提交于 2020-02-17 15:21:28
原文链接: http://tecdat.cn/?p=10911 用户和产品的潜在特征编写推荐系统矩阵分解工作原理使用潜在表征来找到类似的产品。 1. 用户和产品的潜在特征 我们可以通过为每个用户和每部电影分配属性,然后将它们相乘并合并结果来估计用户喜欢电影的程度。 ​ 相同的计算可以表示为矩阵乘法问题。首先,我们把用户属性放在一个名为U的矩阵中,在这个例子中是5,-2,1,-5和5。然后,我们把电影属性放在一个名为M的矩阵中,我们使用矩阵乘法来找出用户的评分。 ​ 但要做到这一点,我们必须已经知道用户属性和电影属性。为每个用户和每部电影提供属性评级并不容易。我们需要找到一种自动的方法。我们来看看电影评分矩阵, ​ 它显示了我们数据集中的所有用户如何评价电影。这个矩阵非常稀疏,但它给了我们很多信息。例如,我们知道用户ID2给电影1号五颗星。所以,基于此,我们可以猜测,这个用户的属性可能类似于电影的属性,因为它们匹配的很好。换句话说,我们有一些线索可以使用。 让我们看看我们如何利用这些线索来了解每部电影和每个用户。在我们刚刚看到的等式中,U乘M等于电影等级,我们已经知道一些用户的实际电影等级。我们已经拥有的电影评分矩阵是我们方程式的解决方案。虽然它是解决方案的一部分,但是这个阵列仍然有很多漏洞,但对于我们来说,这已经足够了。 ​ 实际上,我们可以使用目前为止我们所知道的电影评级

字节跳动后端开发实习生面试(Python)

寵の児 提交于 2020-02-07 23:47:06
一面: 1.自我介绍。 2.介绍“工大小美”项目相关。 3.Python中的GIL(全局解释器锁),以及哪种情况下使用python的多线程性能有较大的提升。 4.项目中用到了SQLite数据库,如果有多个副本,怎么保证数据的一致性。 5.MySQL中的索引,B+树,事务。 6.TCP三次握手,四次挥手。 7.单链表反转。 8.广度优先周游打印二叉树。 二面: 1.自我介绍。 2.介绍“工大小美”项目相关。 3.浏览器中输入域名后发生了什么,整个流程。 4.cookie可以跨域吗?flask中的cookie怎么实现? 5.flask框架路由实现原理是什么。 6.项目中为什么要使用uwsgi。 7.一个NxM的矩阵,每个格子里面可以放一个字符,按照特定的规则,给定一个字符串,找给矩阵中有没有该字符串。 8.一个栈,在O(1)的时间负责度,找出其中最小的数。 不知道是否是因为招实习生的原因,感觉这次面试题挺简单的,但是由于自己没有好好准备,也没刷过题,所以就被pass了,emmm,好好学学基础,秋招再试一次。 来源: https://www.cnblogs.com/yahuian/p/10896849.html

Numpy学习笔记(三)

大兔子大兔子 提交于 2020-02-01 19:21:12
Numpy的基本操作 前面我们已经知道了新建Numpy数组和定义数组元素的方法。现在来学习数组的各种运算方法 算术运算符 数组的第一类运算是使用算术运算符进行的运算。最显而易见的是为数组加上或乘以一个标量 >> > a = np . arange ( 4 ) >> > a array ( [ 0 , 1 , 2 , 3 ] ) >> > a + 4 array ( [ 4 , 5 , 6 , 7 ] ) >> > a * 2 array ( [ 0 , 2 , 4 , 6 ] ) >> > 这些运算符还可以用于两个数组的运算,在numpy中,这些运算符为 元素级 ,也就是说,它们只用于位置相同的元素之间,所得到的运算结果组成一个新的数组,运算结果在新数组中的位置跟操作数位置相同 >> > a array ( [ 0 , 1 , 2 , 3 ] ) >> > b = np . arange ( 4 , 8 ) >> > b array ( [ 4 , 5 , 6 , 7 ] ) >> > a + b array ( [ 4 , 6 , 8 , 10 ] ) >> > a - b array ( [ - 4 , - 4 , - 4 , - 4 ] ) >> > a * b array ( [ 0 , 5 , 12 , 21 ] ) >> > 此外

numpy模块

末鹿安然 提交于 2020-01-31 14:55:38
numpy 一、numpy介绍 1、随机数生成 2、数组与矩阵 一、numpy介绍 numpy(numerical python)是python科学计算的基本模块,2005年由Travis Oliphant开发。提供了一个N维数组类型ndarry的数据结构,提供了线性代数计算,傅里叶分析,随机数生成等。 1、随机数生成 import numpy as np a = np . random . normal ( 3 , 4 , 100 ) #100个正态分布N(3,4)的随机数 b = np . random . randint ( 0 , 5 , 10 ) #10个[0,4]之间均匀分布的随机整数 c = np . random . choice ( [ 1 , 2 , 3 ] , 100 , replace = True , p = [ 0.3 , 0.25 , 0.45 ] ) #生成100个服从下列分布的随机数 | 1 | 2 | 3 | | 0.3 | 0.25 | 0.45 | 2、数组与矩阵 #创建数组 import numpy as np x = np . array ( [ 1 , 2 , 3 , 4 ] ) #创建矩阵 vimport numpy as np y = np . matrix ( '1,3;7,9' ) #计算矩阵的行列式的值 z = np .

矩阵相乘优化(Gemm)

瘦欲@ 提交于 2020-01-30 16:35:02
一、参考链接 http://tvm.d2l.ai/ https://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf https://zhuanlan.zhihu.com/p/65436463 https://github.com/flame/how-to-optimize-gemm/ 二、矩阵相乘优化方法 假设矩阵C = 矩阵A * 矩阵B; 矩阵A的shape为(M, K),矩阵B的shape为(K, N),矩阵C的shape为(m,n)。 普通的矩阵为 A的一行乘以B的一列,如下图:     c/c++/python基本上是以行存储优先的,本文将以行存储优先作为基础进行优化分析。 考虑两种情况: (1)当AB矩阵较小时,根据计算机结构可知,当从RAM中读取AB矩阵内存,根据局部性原理可以将AB矩阵放到cache中,因为cpu访问cache比访问主存的快。   (2)当AB矩阵较大时,超过cache大小时,根据矩阵乘的普通方法,由于访问“行优先存储的B矩阵”的时候内存不连续(读取B矩阵的一列),造成缓存cache频繁的换入换出,从RAM读取内存的次数大于AB矩阵的大小。因此第一种优化方法: 1. 向量化(SIMD)      向量化可以使一条指令并行的使多个相同操作数执行相同的操作

python_矩阵转置

百般思念 提交于 2020-01-30 09:46:10
矩阵转置 """ 矩阵转置 算法:将list01中每列,存储到list02中每行 """ list01 = [ [ 1 , 2 , 3 , 4 ] , [ 5 , 6 , 7 , 8 ] , [ 9 , 10 , 11 , 12 ] , ] list02 = [ ] for c in range ( len ( list01 [ 0 ] ) ) : line = [ ] for r in range ( len ( list01 ) ) : line . append ( list01 [ r ] [ c ] ) list02 . append ( line ) print ( list02 ) 来源: CSDN 作者: 李富贵︴ 链接: https://blog.csdn.net/weixin_46198526/article/details/104108245

[Python] numpy

耗尽温柔 提交于 2020-01-30 00:06:36
numpy中array的特性: https://www.jianshu.com/p/a75e522d5839# https://blog.csdn.net/zenghaitao0128/article/details/78300770 相关操作: #两个元素的向量 a = np.array([1,2]) #1X2矩阵 a1 = np.array([[1,2]]) #2X1矩阵 a2 = np.array([[1],[2]]) #三个元素的向量 b = np.array([1,2,3]) #1X3矩阵 b1 = np.array([[1,2,3]]) #3X1矩阵 b2 = np.array([[1],[2],[3]]) #3X2矩阵 c = np.array([[1,1],[1,2],[1,3]]) #2X2矩阵,不同维矩阵相加,先扩维 print(a1+a2) #1X2矩阵,向量加矩阵,扩为行矩阵 print(a+a1) #2X2矩阵,向量转为行矩阵,然后矩阵扩维 print(a+a2) #报错,向量元素个数不相等 print(a+b) #三个元素的向量,矩阵乘向量 print(np.dot(c,a)) #报错,不符合矩阵乘法定义 print(np.dot(c,a1)) #3X1矩阵,矩阵乘法 print(np.dot(c,a2)) 矩阵乘法按定义,矩阵加法会扩维