一、python中的二维数组和一维数组之间的运算

1、当二维数组为p×p维

a=np.array([[1,2],[3,4]])
print(a.shape)
a
输出:
(2, 2)
array([[1, 2],[3, 4]])b=np.array([1,2])
print(b.shape)
b
输出:
(2,)
array([1, 2])a.dot(b)
输出:
array([ 5, 11])b.dot(a)
输出:
array([ 7, 10])a.dot(b.T)
输出:
array([ 5, 11])b.T.dot(a)
输出:
array([ 7, 10])b*a
输出:
array([[1, 4],[3, 8]])a*b
输出:
array([[1, 4],[3, 8]])a*b.T
输出:
array([[1, 4],[3, 8]])b.T*a
输出:
array([[1, 4],[3, 8]])

2、当二维数组为m×n维

a=np.array([[1,2],[3,4],[5,6]])
print(a.shape)
a
输出:
(3, 2)
matrix([[1, 2],[3, 4],[5, 6]])b=np.array([1,2,3])
print(b.shape)
b
输出:
(3,)
array([1, 2, 3])c=np.array([1,2])
print(c.shape)
c
输出:
(2,)
array([1, 2])a.dot(b) #报错,此时维度对不上了
a.dot(c)
输出:
matrix([[ 5, 11, 17]])
a.dot(c.T)
输出:
matrix([[ 5, 11, 17]])
#5=1*1+2*2,11=3*1+4*2,17=5*1+6*2,不管c进行.T运算与否,此时c都被看成了2×1的矩阵b.dot(a)
输出:
matrix([[22, 28]])
b.T.dot(a)
输出:
matrix([[22, 28]])
#22=1*1+2*3+3*5,28=1*2+2*4+3*6=28,不管b进行.T运算与否,此时b都被看成了1×3的矩阵
c.dot(a) #报错,此时维度对不上了 a*b #报错
a*c
输出:
array([[ 1,  4],[ 3,  8],[ 5, 12]])

总结:

设二维矩阵为p×p维

在用numpy进行科学计算时,一维数组在二维数组的左右都可以通过dot方法与np.dot进行矩阵乘法运算,但是在左右两边的计算结果不一样的,不管转置与否,在右边一维数组被看成p×1维,在左边一维数组被看成1×p维.

在用*进行运算时,是对应元素相乘,不管一维数组转置与否,都是对应行元素相乘。

二、python中的矩阵和一维数组之间的运算

1、当矩阵为方阵(p×p维)

a=np.matrix(np.array([[1,2],[3,4]]))
print(a.shape)
a
输出:
(2, 2)
matrix([[1, 2],[3, 4]])#使用dot
b=np.array([1,2])
print(b.shape)
b
输出:
(2,)
array([1, 2])a.dot(b)
输出:
matrix([[ 5, 11]]) #5=1*1+2*2,11=3*1+4*2,此时b被看成了2×1的矩阵np.dot(a,b)
输出:
matrix([[ 5, 11]]) #5=1*1+2*2,11=3*1+4*2,此时b被看成了2×1的矩阵b.dot(a)
输出:
matrix([[ 7, 10]]) #7=1*1+2*3,10=1*2+2*4,此时b被看成了1×2的矩阵np.dot(b,a)
输出:
matrix([[ 7, 10]]) #7=1*1+2*3,10=1*2+2*4,此时b被看成了1×2的矩阵a.dot(b.T)
输出:
matrix([[ 5, 11]]) b.T.dot(a)
matrix([[ 7, 10]])
#不管b进行.T运算与否,b被看成什么样子完全由乘法的顺序和a的形状决定#使用*
b*a
输出:
matrix([[ 7, 10]])a*b #报错了
a*b.T #报错了np.matrix(b)
输出:
matrix([[1, 2]])
#如果用*的话,不管b进行.T运算与否,做乘法时,b是被看成了1×2的矩阵a*np.matrix(b).T
输出:
matrix([[ 5],[11]])

 总结:

设矩阵为p×p维

在用numpy进行科学计算时,一维数组在矩阵的左右都可以通过dot方法与np.dot进行矩阵乘法运算,但是在左右两边的计算结果不一样的,不管转置与否,在右边一维数组被看成p×1维,在左边一维数组被看成1×p维.

在用*进行运算时,不管一维数组进行.T运算与否,一维数组与矩阵进行乘法运算时会被看做行向量1×p维,除非将一维数组转换为一维矩阵就可以进行.T运算变为p×1维.

2、当矩阵为普通矩阵(m×n维)

a=np.matrix(np.array([[1,2],[3,4],[5,6]]))
print(a.shape)
a
输出:
(3, 2)
matrix([[1, 2],[3, 4],[5, 6]])b=np.array([1,2,3])
print(b.shape)
b
输出:
(3,)
array([1, 2, 3])c=np.array([1,2])
print(c.shape)
c
输出:
(2,)
array([1, 2])a.dot(b) #报错,此时维度对不上了
a.dot(c)
输出:
matrix([[ 5, 11, 17]])
a.dot(c.T)
输出:
matrix([[ 5, 11, 17]])
#5=1*1+2*2,11=3*1+4*2,17=5*1+6*2,不管c进行.T运算与否,此时c都被看成了2×1的矩阵b.dot(a)
输出:
matrix([[22, 28]])
b.T.dot(a)
输出:
matrix([[22, 28]])
#22=1*1+2*3+3*5,28=1*2+2*4+3*6=28,不管b进行.T运算与否,此时b都被看成了1×3的矩阵
c.dot(a) #报错,此时维度对不上了 b*a
输出:
matrix([[22, 28]])
(b.T)*a
输出:
matrix([[22, 28]])np.matrix(b)
输出:
matrix([[1, 2, 3]])
#不管b进行.T运算与否,此时b都被看成了1×3的矩阵

总结:

设矩阵为m×n维

在用numpy进行科学计算时,若一维数组内有m个数,此时只能在矩阵的左边通过dot方法进行矩阵乘法运算,不管一维数组进行.T运算与否,此时一维数组被看成了1×m维的矩阵.若数组内有n个数,此时只能在矩阵的右边通过dot方法进行矩阵乘法运算,不管一维数组进行.T运算与否,此时数组被看成了n×1维的矩阵.

在用*进行运算时,一维数组与矩阵进行运算时,不管一维数组进行.T运算与否,一维数组都会被看做行向量1×m或1×n维的矩阵.

python中的二维数组与一维数组,矩阵和一维数组之间的运算相关推荐

  1. python中的二维数组_Python中的二维数组实例(list与numpy.array)

    关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要 ...

  2. 如何在Python中定义二维数组

    我想定义一个没有初始化长度的二维数组,如下所示: Matrix = [][] 但这不起作用... 我已经尝试过下面的代码,但是它也是错误的: Matrix = [5][5] 错误: Traceback ...

  3. 技术图文:如何在Python中定义二维数组?

    背景 前几天,有位同学问我如下的问题: "temp[0][0]修改后,为什么temp[1][0].temp[2][0]也发生了变化?" "在Python中二维数组是怎样定 ...

  4. python中求二维列表的最大最小值_python+numpy按行求一个二维数组的最大值方法

    python+numpy按行求一个二维数组的最大值方法 问题描述: 给定一个二维数组,求每一行的最大值 返回一个列向量 如: 给定数组[1,2,3:4,5,3] 返回[3:5] import nump ...

  5. python中遍历二维数组_python遍历二维数组-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 二 维 数组 5.2.1 二 ...

  6. python遍历二维数组_在Python中遍历二维数组?

    你需要告诉我们一些事情:dataset = datas.values 它可能是一个二维数组,因为它来自一个csv负载.但是什么形状和数据类型?甚至可能是阵列的一个样本. 这是函数中的data参数吗? ...

  7. python定义二维数组_在python中定义二维数组

    原博文 2016-08-30 19:16 − 发表于 http://liamchzh.0fees.net/?p=234&i=1 一次偶然的机会,发现python中list非常有意思. 先看一段 ...

  8. python中求二维数组元素之和_python二维列表求解所有元素之和

    相信很多初学小伙伴都会遇到二维列表求解所有元素之和问题,下面给出两种两种常见的求和方法. 方法1: 思想:遍历整个二维列表元素,然后将所有元素加起来 1 def Sum_matrix(matrix): ...

  9. Python 中的“二维”字典 (two-dimension dictionary)

    Python 中的dict可以实现迅速查找.那么有没有像数组有二维数组一样,有二维的字典呢?比如我需要对两个关键词进行查找的时候.2D dict 可以通过 dict_2d = {'a': {'a': ...

最新文章

  1. 技术图文:如何利用 Python 做一个简单的定时器类?
  2. 关于Unity中自带摇杆与车轮碰撞器的使用
  3. 什么叫通过超链接实现换页_亚马逊大卖都在用的那些链接 -- 超链接
  4. 企业网络推广方案教网站优化新手更合理地处理过期页面
  5. IT人不要一直做技术[转载]
  6. 【pmcaff】页面停留时间和网站停留时间详解
  7. linux 如何让.开头的文件不隐藏_每日一课 | Linux:如何gzip文件夹
  8. Working with Multiple Environments(使用多个环境)
  9. 牛客网【每日一题】7月29日题目精讲—Max Power
  10. 果园机器人作文开头_易学好用的万能开头—热点事件引入式
  11. c语言open不同的编码格式,C语言中open与fopen的区别
  12. 如何用adb链接手机,并异常情况下的处理(转)
  13. 巧用.bat批处理文件
  14. 【玩转Colab】GitHub标星3.6k | 给AI一张高清照片,分分钟还你细节满满的3D人体模型!
  15. nanomsg实验——pubsub
  16. java网络病毒_网络病毒是由因特网衍生出的新一代病毒,即JAVA及ACTIVEX病毒。 (),不被人们察觉。...
  17. 业界 | 福布斯:2018年机器学习试点及实施数量将翻倍
  18. 年薪五万程序员的生活及他的理财梦
  19. 连接git仓库失败解决办法
  20. 计算机三级网络技术资料分享

热门文章

  1. 小米上市!工号1000以内千万富翁,100以内亿万富翁
  2. max3232ese 问题记录及解决
  3. 四川大学一九年计算机研究生名单,四川大学公布数百名研究生清退名单,有的长达18年未完成学业...
  4. Correlation Intractability ( CI )
  5. Grafana面板(panel):报警功能(alerts)
  6. linux shell 计算时间差值
  7. python简介(维基)
  8. Python曲线平滑
  9. 如何查询安卓手机型号以及如何修改型号跟品牌
  10. 网络数据采集的系统特点有哪些?