python的几种矩阵相乘的公式详解
1. 同线性代数中矩阵乘法的定义: np.dot()
np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义。对于一维矩阵,计算两者的内积。见如下Python代码:
import numpy as np # 2-D array: 2 x 3 two_dim_matrix_one = np.array([[1, 2, 3], [4, 5, 6]]) # 2-D array: 3 x 2 two_dim_matrix_two = np.array([[1, 2], [3, 4], [5, 6]]) two_multi_res = np.dot(two_dim_matrix_one, two_dim_matrix_two) print('two_multi_res: %s' %(two_multi_res)) # 1-D array one_dim_vec_one = np.array([1, 2, 3]) one_dim_vec_two = np.array([4, 5, 6]) one_result_res = np.dot(one_dim_vec_one, one_dim_vec_two) print('one_result_res: %s' %(one_result_res))
结果如下:
two_multi_res: [[22 28] [49 64]] one_result_res: 32
2. 对应元素相乘 element-wise product: np.multiply(), 或 *
在Python中,实现对应元素相乘,有2种方式,一个是np.multiply(),另外一个是*。见如下Python代码:
import numpy as np # 2-D array: 2 x 3 two_dim_matrix_one = np.array([[1, 2, 3], [4, 5, 6]]) another_two_dim_matrix_one = np.array([[7, 8, 9], [4, 7, 1]]) # 对应元素相乘 element-wise product element_wise = two_dim_matrix_one * another_two_dim_matrix_one print('element wise product: %s' %(element_wise)) # 对应元素相乘 element-wise product element_wise_2 = np.multiply(two_dim_matrix_one, another_two_dim_matrix_one) print('element wise product: %s' % (element_wise_2))
结果如下:
element wise product: [[ 7 16 27] [16 35 6]] element wise product: [[ 7 16 27] [16 35 6]]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python实现矩阵相乘的三种方法小结
问题描述 分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22∗2222∗22, 23∗2323∗23, 24∗2424∗24, 25∗2525∗25, 26∗2626∗26, 27∗2727∗27, 28∗2828∗28, 29∗2929∗29时的运行时间与MATLAB自带的矩阵相乘的运行时间,绘制时间对比图. 解题方法 本文采用了以下方法进行求值:矩阵计算法.定义法.分治法和Strassen方法.这里我们使用Matlab以及Python对这个问题进行处理,比较两种语言在一样的条件下,
-
Python中矩阵创建和矩阵运算方法
矩阵创建 1.from numpyimport *; a1=array([1,2,3]) a2=mat(a1) 矩阵与方块列表的区别如下: 2.data2=mat(ones((2,4))) 创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int 3.data5=mat(random.randint(2,8,size=(2,5)) 产生一个2-8之间的随机整数矩阵 4.data3=mat(random.rand(2,2)) 这里的random模块使用的是num
-
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
本文实例讲述了Python使用numpy产生正态分布随机数的向量或矩阵操作.分享给大家供大家参考,具体如下: 简单来说,正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力.一般的正态分布可以通过标准正态分布配合数学期望向量和协方差矩阵得到.如下代码,可以得到满足一维和二维正态分布的样本. 示例1(一维正态分布): # coding=utf-8 '''
-
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
本文实例讲述了Python使用min.max函数查找二维数据矩阵中最小.最大值的方法.分享给大家供大家参考,具体如下: 简单使用min.max函数来得到二维数据矩阵中的最大最小值,很简单,这是因为工作需要用到一个东西所以先简单来写了一下: #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:找出来随机生成矩阵中的最大.最小值 ''' import time import random def random_matrix_ge
-
Python numpy中矩阵的基本用法汇总
Python矩阵的基本用法 mat()函数将目标数据的类型转化成矩阵(matrix) 1,mat()函数和array()函数的区别 Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价. 直接看一个例子: import numpy as np a = np.mat('1 3;5 7')
-
Python实现的矩阵转置与矩阵相乘运算示例
本文实例讲述了Python实现的矩阵转置与矩阵相乘运算.分享给大家供大家参考,具体如下: 矩阵转置 方法一 :使用常规的思路 def transpose(M): # 初始化转置后的矩阵 result = [] # 获取转置前的行和列 row, col = shape(M) # 先对列进行循环 for i in range(col): # 外层循环的容器 item = [] # 在列循环的内部进行行的循环 for index in range(row): item.append(M[index][
-
python的几种矩阵相乘的公式详解
1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码: import numpy as np # 2-D array: 2 x 3 two_dim_matrix_one = np.array([[1, 2, 3], [4, 5, 6]]) # 2-D array: 3 x 2 two_dim_matrix_two = np.array([[1, 2]
-
对Python中一维向量和一维向量转置相乘的方法详解
在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在python中, 我们发现,无论是".T"还是"np.transpose"都无法实现一维向量的转置,相比之下,Matlab一句" a' "就能实现了. 那怎么实现呢?我找了个方法.请看: 即,我们把向量reshape一下,如此便实现了一维向量与一维向量转置相乘为矩阵的目的. 若大家有其他方法望告知. 以上这篇对
-
基于Python中单例模式的几种实现方式及优化详解
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪
-
对Python中创建进程的两种方式以及进程池详解
在Python中创建进程有两种方式,第一种是: from multiprocessing import Process import time def test(): while True: print('---test---') time.sleep(1) if __name__ == '__main__': p=Process(target=test) p.start() while True: print('---main---') time.sleep(1) 上面这段代码是在window
-
python机器学习基础线性回归与岭回归算法详解
目录 一.什么是线性回归 1.线性回归简述 2.数组和矩阵 数组 矩阵 3.线性回归的算法 二.权重的求解 1.正规方程 2.梯度下降 三.线性回归案例 1.案例概述 2.数据获取 3.数据分割 4.数据标准化 5.模型训练 6.回归性能评估 7.梯度下降与正规方程区别 四.岭回归Ridge 1.过拟合与欠拟合 2.正则化 一.什么是线性回归 1.线性回归简述 线性回归,是一种趋势,通过这个趋势,我们能预测所需要得到的大致目标值.线性关系在二维中是直线关系,三维中是平面关系. 我们可以使用如下模
-
对python numpy数组中冒号的使用方法详解
python中冒号实际上有两个意思:1.默认全部选择:2. 指定范围. 下面看例子 定义数组 X=array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]) 输出为5x4二维数组 第一种意思,默认全部选择: 如,X[:,0]就是取矩阵X的所有行的第0列的元素,X[:,1] 就是取所有行的第1列的元素 第二种意思,指定范围,注意这里含左不含右 如,X[:, m:n]即取矩阵X的所有行中的的第m到n-1列数据,含左不含右
-
Python图像处理库PIL的ImageDraw模块介绍详解
ImageDraw模块提供了图像对象的简单2D绘制.用户可以使用这个模块创建新的图像,注释或润饰已存在图像,为web应用实时产生各种图形. PIL中一个更高级绘图库见The aggdraw Module 一.ImageDraw模块的概念 1. Coordinates 绘图接口使用和PIL一样的坐标系统,即(0,0)为左上角. 2. Colours 为了指定颜色,用户可以使用数字或者元组,对应用户使用函数Image.new或者Image.putpixel.对于模式为"1","
-
能让Python提速超40倍的神器Cython详解
让Python提速超过40倍的神器:Cython 人工智能最火的语言,自然是被誉为迄今为止最容易使用的代码之一的Python.Python代码素来以直观.高可读性著称. 然而,易用的背后,是Python无法逾越的障碍:慢.尤其是C程序员,这群快枪手简直无法忍受Python的慢. 所以有人就想了各种方法去解决这个问题,本文就介绍其中的一种.如果你的代码是纯Python,或者你必须用一个大的for循环却无法放入矩阵因为数据必须按顺序处理,那么就可以使用Cython来加速Python. 1.什么是Cy
-
Python Pandas学习之数据离散化与合并详解
目录 1数据离散化 1.1为什么要离散化 1.2什么是数据的离散化 1.3举例股票的涨跌幅离散化 2数据合并 2.1pd.concat实现数据合并 2.2pd.merge 1 数据离散化 1.1 为什么要离散化 连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数.离散化方法经常作为数据挖掘的工具. 1.2 什么是数据的离散化 连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数 值代表落在每个子区间中的属性值. 离散化有
-
Python图像运算之图像灰度非线性变换详解
目录 一.图像灰度非线性变换 二.图像灰度对数变换 三.图像灰度伽玛变换 四.总结 一.图像灰度非线性变换 原始图像的灰度值按照DB=DA×DA/255的公式进行非线性变换,其代码如下: # -*- coding: utf-8 -*- # By:Eastmount import cv2 import numpy as np import matplotlib.pyplot as plt #读取原始图像 img = cv2.imread('luo.png') #图像灰度转换 grayImage =
随机推荐
- IOS10.11 无法访问http的问题解决办法
- oracle索引介绍(图文详解)
- 对于input 框限定输入值为浮点型的js代码
- js与C#进行时间戳转换
- php通过asort()给关联数组按照值排序的方法
- PHP session文件独占锁引起阻塞问题解决方法
- ASP常用源代码的总结(上)
- OpenCV中C++函数imread读取图片的问题及解决方法
- timespan使用方法详解
- node.js中的path.sep方法使用说明
- PHP中if和or运行效率对比
- 防止网页脚本病毒执行的方法-from web
- 一个仿糯米弹框效果demo
- jQuery对象[0]是什么含义?
- python实现ping的方法
- win2003 iis6 Rewrite权限设置问题 解决了 大家共享 2003NTFS用户 你不看肯定开不开
- 实例探究Android应用编写时Fragment的生命周期问题
- 如何从零开始利用js手写一个Promise库详解
- C++控制台用定时器实例代码
- PHP实现小程序批量通知推送