博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python】numpy使用心得
阅读量:2357 次
发布时间:2019-05-10

本文共 2473 字,大约阅读时间需要 8 分钟。

文章目录

一、乘法

  • numpy.dot(x,y)就是正常的向量或者矩阵乘法
  • x*y:
    分情况讨论
    • 如果x和y是维度相同的行(列)向量或者矩阵,结果是对应位置的数相乘:
import numpy as npa =np.array([1,2,3])b = np.array([4,2,6])print(a*b)# 结果 array([ 4,  4, 18])c = np.array([[1],[2],[3]])d = np.array([[4],[2],[6]])print(c*d)# array([[ 4],#       [ 4],#       [18]])>>> e	       array([[ 4,  8, 12],       [ 2,  4,  6],       [ 6, 12, 18]])>>> f	       array([[2, 3, 4],       [2, 4, 6],       [6, 3, 7]])>>> e*f	       array([[  8,  24,  48],       [  4,  16,  36],       [ 36,  36, 126]])
  • 如果x和y,一个是行向量,另一个是列向量,那么,将行或列进行复制,形成相同形状的矩阵后,在对应位置的元素相乘:
>>> aarray([1, 2, 3])>>> darray([[4],      [2],      [6]])>>> a*darray([[ 4,  8, 12],      [ 2,  4,  6],      [ 6, 12, 18]])
  • 如果x和y是维度不相同的矩阵则无法进行这种运算
>>> h		   array([[2, 3],       [3, 5],       [4, 6]])>>> g		   array([[2, 3, 5],       [3, 5, 6]])>>> g*h		   Traceback (most recent call last):  File "
", line 1, in
g*hValueError: operands could not be broadcast together with shapes (2,3) (3,2) >>> h*g Traceback (most recent call last): File "
", line 1, in
h*gValueError: operands could not be broadcast together with shapes (3,2) (2,3)
  • 如果x和y一个是矩阵一个是向量,则将向量进行复制,形成与矩阵相同的大小,然后对应位置元素相乘。
>>> h		   array([[2, 3],       [3, 5],       [4, 6]])>>> i		   array([[3],       [6],       [8]])>>> h*i		   array([[ 6,  9],       [18, 30],       [32, 48]])>>> i*h		   array([[ 6,  9],       [18, 30],       [32, 48]])>>> h		   array([[2, 3],       [3, 5],       [4, 6]])>>> g = np.array([3,4])		   >>> h*g		   array([[ 6, 12],       [ 9, 20],       [12, 24]])>>> g*h		   array([[ 6, 12],       [ 9, 20],       [12, 24]])

二、转置

array.transpose()

array.T

首先需要说明的是,如果你的array是行向量。那么前两个转置方法是没有用的。如果是列向量或者矩阵,要转置成为行向量,那么前两个是有用的。示例如下:

>>> b		   array([4, 2, 6])>>> b.T		   array([4, 2, 6])>>> b.transpose()		   array([4, 2, 6])>>> c		   array([[1],       [2],       [3]])>>> c.T		   array([[1, 2, 3]])>>> c.transpose()		   array([[1, 2, 3]])>>> h		   array([[2, 3],       [3, 5],       [4, 6]])>>> h.T		   array([[2, 3, 4],       [3, 5, 6]])>>> h.transpose()		   array([[2, 3, 4],       [3, 5, 6]])
  • 不管是矩阵还是向量下面这个方法一定是有用的,但一般只用这个处理行向量的转置:

reshape()

其原型如下:

numpy.reshape(a, newshape, order='C')[source]¶# a:待reshape的数组# newshape: 新数组的样式,(x,y), 表示x行,y列,如果y为-1,那么它会根据原数组中数据的数量,以及行x的数量,自动计算y的值。

使用示例:

import numpy as npa = np.array([1,2,3]);b = np.reshape(a,(3, -1));print(b)#结果:[[1]# 		[2]# 		[3]]

求逆

Q = np.array([[-0.6, -0.8],			  [-0.8, 0.6]])np.linalg.inv(Q)

转载地址:http://ewbtb.baihongyu.com/

你可能感兴趣的文章
区块链是否做好了迎接法币的准备?为什么银行如此看好加密货币?
查看>>
加密货币--Cryptocurrency
查看>>
Myeclipse的不足之一,struts 配置 action
查看>>
input /button链接方法
查看>>
CSS,font-family,好看,常用,中文,字体(更新中)
查看>>
Redis---基础知识:数据类型、持久化机制、虚拟内存、高级特性、应用场景
查看>>
Python3---获取延迟、提前的时间、日期---datetime、time
查看>>
Python3+selenium+Chrome---获取表格(tbody)中数据(tr)的详细内容----a & td内容的获取
查看>>
Docker/Podman使用提高----Dockerfile的制作基础及常见的问题
查看>>
Jenkins持续部署---centos7+Docker+Github+Flask项目-------补丁篇
查看>>
C语言基础---指针数组----初始化方式&常量指针数组、指针常量数组
查看>>
C语言基础---数组、指针之间的相同与不同
查看>>
类的继承的应用场景
查看>>
python3 + selenium------Chrome和Firefox 驱动的使用和版本对应
查看>>
pycharm不同测试框架的设置、unittest测试案例
查看>>
python unittest TestCase间共享数据(全局变量的使用)
查看>>
Python中普通字符串 & json字符串&json对象的区别
查看>>
python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
查看>>
Python3中打开文件的方式(With open)
查看>>
python中unittest加载测试用例的4种方法
查看>>