matlab和python中的各种矩阵相关数据类型---矩阵乘法和矩阵点乘

矩阵乘法和点乘总结

MatlabPython Numpy arrayPython Numpy matrix
矩阵乘法*np.dot()np.dot() 和 *
点乘. *np.multiply() 和 *np.multiply()

1. python中和矩阵有关的数据类型有如下几种:

1.1 python列表(list)

两个列表点乘的实现: 结合zip函数,使用map函数:

    #这段代码需要使用python2运行,如果使用python3运行报错
    List1 = [1,2,3,4]
    List2 = [5,6,7,8]
    List3 = map(lambda (a,b):a*b,zip(List1,List2))
    print List3

1.2 python数组(array)

当我们需要1000万个浮点数的时候,数组(array)的效率要比列表(list)要高得多,因为数组在背后存的并不是float对象,而是数字的机器翻译,也就是字节表述。这一点和c语言中的数组一样。

1.3 numpy中的数组(array)

numpy数组和python列表的区别

(a)、numpy数组创建时是固定大小,python列表(list)是动态的。更改ndarray的大小将创建一个新数组并删除原来的数组。

(b)、元素类型区别。

NumPy数组中的元素都需要具有相同的数据类型,因此在内存中的大小相同。

python的List可以存放不同类型的元素。

例外情况:Python的原生数组里包含了NumPy的对象的时候,这种情况下就允许不同大小元素的数组。

(c)、数学操作执行效率高于原生python

(d)、越来越多的基于Python的科学和数学软件包使用NumPy数组

1.4 numpy中的矩阵(matrix)

numpy中数组array和矩阵matrix的区别:

matrix是array的分支,matrix和array在很多时候都是通用的,你用哪一个都一样。但这时候,官方建议大家如果两个可以通用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。
但是matrix的优势就是相对简单的运算符号,比如两个矩阵相乘,就是用符号*,但是array相乘不能这么用,得用方法.dot()
array的优势就是不仅仅表示二维,还能表示3、4、5…维,而且在大部分Python程序里,array也是更常用的。

2. Python中的矩阵乘法和矩阵点乘

2.1 numpy中的array

np.dot()表示矩阵相乘。 *表示点乘。np.multiply()表示点乘

import numpy as np

a = np.array([[1, 0], [0, 1]])
b = np.array([[4, 1], [2, 2]])

x = np.dot(a, b) # 矩阵相乘
y = a*b          # 点乘
z = np.multiply(a, b) # 点乘
print(x)
print(y)
print(z)
[[4 1]
 [2 2]]
[[4 0]
 [0 2]]
[[4 0]
 [0 2]]

2.1 numpy中的matrix

np.dot()表示矩阵相乘。 *表示矩阵相乘。np.multiply()表示点乘

import numpy as np

a = np.mat([[1, 0], [0, 1]])
b = np.mat([[4, 1], [2, 2]])

x = np.dot(a, b) # 矩阵相乘
y = a*b          # 矩阵相乘
z = np.multiply(a, b) # 点乘
print(x)
print(y)
print(z)
[[4 1]
 [2 2]]
[[4 1]
 [2 2]]
[[4 0]
 [0 2]]

3. matlab中的矩阵乘法和矩阵点乘


a=[[1, 0]; [0, 1]]
b=[[4, 1]; [2, 2]]
x=a*b    %矩阵乘法,要求乘号左边的矩阵的列数 等于 乘号右边的矩阵的行数。
y=a.*b  % 矩阵点乘,即每个元素对应相称。要求输入的两个矩阵形状相同。

x =

     4     1
     2     2


y =

     4     0
     0     2
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值