numpy

您所在的位置:网站首页 multiply与times区别 numpy

numpy

2024-07-12 03:13:02| 来源: 网络整理| 查看: 265

文章目录 【1】np.array,np.matrix,np.mat的区别(1)np.array和后两者的区别(2)np.mat和np.matrix的区别 【3】矩阵相乘 (*)、np.multiply、np.dot的区别(1)当被乘的二者为array时(2)当被乘的二者为mat/matrix时(3)总结

【1】np.array,np.matrix,np.mat的区别 (1)np.array和后两者的区别

数据类型不同 np.array产生numpy.ndarray类型的数据,不能进行矩阵意义上的乘法。np.matrix,np.mat产生numpy.matrix类型数据,可以进行矩阵相乘 见下例

import numpy as np a = np.mat('1 2 3;3 4 5;1 2 3') b = np.mat([[1, 2], [3, 4]]) print(a) print(b) ''' 两种方法都可以 [[1 2 3] [3 4 5] [1 2 3]] [[1 2] [3 4]] ''' print(type(a)) print(type(b)) ''' ''' c = np.array([[1, 2], [3, 4]]) print(c) ''' [[1 2] [3 4]] ''' print(type(c)) #

解释:array是创建数组,他的shape是(6,),但使用reshape后 可以将数组转换为矩阵。(见下例) np.array与np.arange的区别:np.array必须自己手动输入数组;np.arange与直接使用range类似,可以产生一串数字。但二者产生的都是数组并非矩阵。

a = np.arange(12).reshape(3,4) print(a) ''' [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] ''' b = np.array([1,2,3,4,5,6]) print(b.shape) #(6,) c = b.reshape(2,3) print(c.shape) #(2, 3)

一维数组和一维矩阵的区别 (12,)表示是数组,只有一个[ ] ; (1, 12)是一维矩阵,左右各有两个[ ] ,matrix可以使二维数组变为二维矩阵,可以将数组变为一维矩阵

a = np.arange(12) print(a.shape) #(12,) #[ 0 1 2 3 4 5 6 7 8 9 10 11] a = np.matrix(a) print(a.shape) #(1, 12) #[[ 0 1 2 3 4 5 6 7 8 9 10 11]] c = np.matrix([[1,2,3,4,5,6],[7,8,9,10,11,12]], dtype=int) print(c) ''' [[ 1 2 3 4 5 6] [ 7 8 9 10 11 12]] ''' (2)np.mat和np.matrix的区别

由数组变为矩阵有np.mat和np.matrix两种方法。 使用np.mat后,如果对原数组进行改变,矩阵也会相应发生变化,如下:

#创建ndarray二维数组 x = np.array([[1, 2], [3, 4]]) #生成 矩阵 m = np.mat(x) #打印 m 矩阵 print(m) ''' [[1 2] [3 4]] ''' x[0,0] = 0 print(m) ''' [[0 2] [3 4]] '''

但使用np.matrix后,如果对原数组进行改变,矩阵不会相应发生变化,如下:

#创建ndarray二维数组 x = np.array([[1, 2], [3, 4]]) #生成 矩阵 m = np.matrix(x) #打印 m 矩阵 print(m) ''' [[1 2] [3 4]] ''' x[0,0] = 0 print(m) ''' [[1 2] [3 4]] ''' 【3】矩阵相乘 (*)、np.multiply、np.dot的区别

注意:不同类型的数据在使用他们三者时的效果不同。

(1)当被乘的二者为array时

使用np.dot才能进行矩阵的相乘(2×3与3×2=2×2 相乘后相加),但乘积的结果类型为 说明它不是真正的矩阵相乘,但是可以遵守矩阵相乘的法则。

import numpy as np a = np.array([[1,2,3],[1,1,1]]) b = np.array([[1,1],[1,1],[1,1]]) print(a) ''' [[1 2 3] [1 1 1]] ''' print(b) ''' [[1 1] [1 1] [1 1]] ''' print(np.dot(a,b)) ''' [[6 6] [3 3]] '''

如果不符合矩阵乘法规则,则必须两数组的形式完全相同,才能进行运算。 a*b就是对应元素的乘积,multiply也是对应元素的乘积,乘积的结果类型为

a = np.array([[1,2,3],[1,1,1]]) b = np.array([[1,1,1],[1,1,1]]) print(a) ''' [[1 2 3] [1 1 1]] ''' print(b) ''' [[1 1 1] [1 1 1]] ''' print(a*b) ''' [[1 2 3] [1 1 1]] ''' (2)当被乘的二者为mat/matrix时

默认 a*b与 dot(a,b)是矩阵的乘积(3×3与3×1=3×1即m×n与n×y=m×y),结果类型为

import numpy as np a = np.mat('1 2 3;3 4 5;1 2 3') b = np.mat([[1],[1],[1]]) c = np.dot(a,b) print(c) ''' [[ 6] [12] [ 6]] ''' c = a*b print(c) ''' [[ 6] [12] [ 6]] '''

multiply转化为对应元素的乘积,相乘条件为两矩阵均为完全相同的格式 或 行数相同且列数为1(2×3与2×1=3×3即m×n与m×1=m×n),对应位置只相乘不进行相加

import numpy as np a = np.matrix('1 2 3;3 4 5') #相同格式 b = np.matrix([[1,1,1],[2,2,2]]) c = np.multiply(a,b) print(c) ''' [[ 1 2 3] [ 6 8 10]] ''' a = np.matrix('1 2 3;3 4 5') #行数相同其中一个列数为1 b = np.matrix([[1],[2]]) c = np.multiply(a,b) print(c) ''' [[ 1 2 3] [ 6 8 10]] ''' (3)总结

np.dot无论数据是array或matrix都表示矩阵相乘 np.multiply无论数据是array或matrix都表示对应位置相乘

如果数据类型为array,(*)和np.multiply表示对应位置相乘,np.dot表示矩阵形式相乘

如果数据类型为matrix,np.multiply表示对应位置位置相乘,(*)和np.dot表示矩阵形式相乘



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭