导航:首页 > 编程语言 > python矩阵预算

python矩阵预算

发布时间:2023-04-18 07:57:59

python中怎样计算矩阵按逐元素进行相乘

示例,供参考。

mat1=[[1,2,3],[4,5,6],[7,8,9]]
m=1
foriinrange(3):
forjinrange(3):
m=m*mat1[i][j]
print(m)

Ⅱ python中稀疏矩阵的怎么用numpy处理

NumPy是一个关于矩阵运算的库,熟悉Matlab的都应该清楚,这个库就是让python能够进行矩阵话的操作,而不用去写循环操作。
下面对numpy中的操作进行总结。
numpy包含两种基本的数据类型:数组和矩阵。
数组(Arrays)
>>> from numpy import *>>> a1=array([1,1,1]) #定义一个数组>>> a2=array([2,2,2])>>> a1+a2 #对于元素相加array([3, 3, 3])>>> a1*2 #乘一个数array([2, 2, 2])##>>> a1=array([1,2,3])>>> a1
array([1, 2, 3])>>> a1**3 #表示对数组中的每个数做平方array([ 1, 8, 27])##取值,注意的是它是以0为开始坐标,不matlab不同>>> a1[1]2##定义多维数组>>> a3=array([[1,2,3],[4,5,6]])>>> a3
array([[1, 2, 3],
[4, 5, 6]])>>> a3[0] #取出第一行的数据array([1, 2, 3])>>> a3[0,0] #第一行第一个数据1>>> a3[0][0] #也可用这种方式1##数组点乘,相当于matlab点乘操作>>> a1=array([1,2,3])>>> a2=array([4,5,6])>>> a1*a2
array([ 4, 10, 18])

Numpy有许多的创建数组的函数:
import numpy as np

a = np.zeros((2,2)) # Create an array of all zerosprint a # Prints "[[ 0. 0.]
# [ 0. 0.]]"b = np.ones((1,2)) # Create an array of all onesprint b # Prints "[[ 1. 1.]]"c = np.full((2,2), 7) # Create a constant arrayprint c # Prints "[[ 7. 7.]
# [ 7. 7.]]"d = np.eye(2) # Create a 2x2 identity matrixprint d # Prints "[[ 1. 0.]
# [ 0. 1.]]"e = np.random.random((2,2)) # Create an array filled with random valuesprint e # Might print "[[ 0.91940167 0.08143941]
# [ 0.68744134 0.87236687]]"

数组索引(Array indexing)
矩阵
矩阵的操作与Matlab语言有很多的相关性。
#创建矩阵
>>> m=mat([1,2,3])
>>> m
matrix([[1, 2, 3]])

#取值
>>> m[0] #取一行
matrix([[1, 2, 3]])
>>> m[0,1] #第一行,第2个数据2>>> m[0][1] #注意不能像数组那样取值了
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__
out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1#将Python的列表转换成NumPy的矩阵
>>> list=[1,2,3]
>>> mat(list)
matrix([[1, 2, 3]])

#矩阵相乘
>>> m1=mat([1,2,3]) #1行3列
>>> m2=mat([4,5,6])
>>> m1*m2.T #注意左列与右行相等 m2.T为转置操作
matrix([[32]])
>>> multiply(m1,m2) #执行点乘操作,要使用函数,特别注意
matrix([[ 4, 10, 18]])

#排序
>>> m=mat([[2,5,1],[4,6,2]]) #创建2行3列矩阵
>>> m
matrix([[2, 5, 1],
[4, 6, 2]])
>>> m.sort() #对每一行进行排序
>>> m
matrix([[1, 2, 5],
[2, 4, 6]])

>>> m.shape #获得矩阵的行列数
(2, 3)
>>> m.shape[0] #获得矩阵的行数2>>> m.shape[1] #获得矩阵的列数3#索引取值
>>> m[1,:] #取得第一行的所有元素
matrix([[2, 4, 6]])
>>> m[1,0:1] #第一行第0个元素,注意左闭右开
matrix([[2]])
>>> m[1,0:3]
matrix([[2, 4, 6]])
>>> m[1,0:2]
matrix([[2, 4]])35363738394

扩展矩阵函数tile()
例如,要计算[0,0,0]到一个多维矩阵中每个点的距离,则要将[0,0,0]进行扩展。
tile(inX, (i,j)) ;i是扩展个数,j是扩展长度
实例如下:
>>>x=mat([0,0,0])
>>> x
matrix([[0, 0, 0]])
>>> tile(x,(3,1)) #即将x扩展3个,j=1,表示其列数不变
matrix([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> tile(x,(2,2)) #x扩展2次,j=2,横向扩展
matrix([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])1234567891011121314

Ⅲ python 怎么给矩阵里的每一个元素赋值

方法一:

1、如图所示是我们创建了一个矩阵,一般我们的操作过程中有矩阵的话那么在工作区就会出现,如图所示,我们可以双击工作区的需要更改的矩阵。

Ⅳ python中的矩阵运算

NumPy支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
首先安装NumPy,安装过pandas,它会自动安装它的依赖,就不需要安装NumPy了。

Ⅳ python 矩阵操作, 筛选符合条件的行

我举个简单的例子:


取出含有元素0的所有行

importnumpyasnp
x=np.array([[1,2,3,4,0],[2,3,4,5,6],[0,1,2,3,4]])
b=[]
forrowinx:
foriinrow:
ifi==0:
b.append(row)
printb

PS G:Python learning-Q> python ex.py

[array([1, 2, 3, 4, 0]), array([0, 1, 2, 3, 4])]

Ⅵ python矩阵乘法是什么

python实现矩阵乘法的方法

def matrixMul(A, B):

res = [[0] * len(B[0]) for i in range(len(A))]

for i in range(len(A)):

for j in range(len(B[0])):

for k in range(len(B)):

res[i][j] += A[i][k] * B[k][j]

return res

def matrixMul2(A, B):

return [[sum(a * b for a, b in zip(a, b)) for b in zip(*B)] for a in A]

a = [[1,2], [3,4], [5,6], [7,8]]

b = [[1,2,3,4], [5,6,7,8]]

print matrixMul(a,b)

print matrixMul(b,a)

乘积形式

除了上述的矩阵乘法以外,还有其他一些特殊的“乘积”形式被定义在矩阵上,值得注意的是,当提及“矩阵相乘”或者“矩阵乘法”的时候,并不是指代这些特殊的乘积形式,而是定义中所描述的矩阵乘法。在描述这些特殊乘积时,使用这些运算的专用名称和符号来避免表述歧义。

Ⅶ python计算每两个向量之间的距离并保持到矩阵中

在很多算法中都会涉及到求向量欧式距离,例如机器学习中的KNN算法,就需要对由训练集A和测试集B中的向量组成的所有有序对(Ai,Bi),求出Ai和Bi的欧式距离。这样的话就会带来一个二重的嵌套循环,在向量集很大时效率不高。
这里介绍如何将这一过程用矩阵运算实现。
假设有两个三维向量集,用矩阵表示:

A=[a11a12a21a22a31a32]

B=⎡⎣⎢⎢b11b12b13b21b22b23b31b32b33⎤⎦⎥⎥

要求A,B两个集合中的元素两两间欧氏距离。

先求出ABT:

ABT=⎡⎣⎢⎢⎢⎢⎢∑k=13ak1bk1∑k=13ak2bk1∑k=13ak1bk2∑k=13ak2bk2∑k=13ak1bk3∑k=13ak2bk3⎤⎦⎥⎥⎥⎥⎥

然后对A和BT分别求其中每个向量的模平方,并扩展为2*3矩阵:

Asq=⎡⎣⎢⎢⎢⎢⎢∑k=13(ak1)2∑k=13(ak2)2∑k=13(ak1)2∑k=13(ak2)2∑k=13(ak1)2∑k=13(ak2)2⎤⎦⎥⎥⎥⎥⎥

Bsq=⎡⎣⎢⎢⎢⎢⎢∑k=13(bk1)2∑k=13(bk1)2∑k=13(bk2)2∑k=13(bk2)2∑k=13(bk3)2∑k=13(bk3)2⎤⎦⎥⎥⎥⎥⎥

然后:

Asq+Bsq−2ABT=⎡⎣⎢⎢⎢⎢⎢∑k=13(ak1−bk1)2∑k=13(ak2−bk1)2∑k=13(ak1−bk2)2∑k=13(ak2−bk2)2∑k=13(ak1−bk3)2∑k=13(ak2−bk3)2⎤⎦⎥⎥⎥⎥⎥

将上面这个矩阵一开平方,就得到了A,B向量集两两间的欧式距离了。
下面是Python实现:
import numpy
def EuclideanDistances(A, B):
BT = B.transpose()
vecProd = A * BT
SqA = A.getA()**2
sumSqA = numpy.matrix(numpy.sum(SqA, axis=1))
sumSqAEx = numpy.tile(sumSqA.transpose(), (1, vecProd.shape[1]))
SqB = B.getA()**2
sumSqB = numpy.sum(SqB, axis=1)
sumSqBEx = numpy.tile(sumSqB, (vecProd.shape[0], 1))
SqED = sumSqBEx + sumSqAEx - 2*vecProd
ED = (SqED.getA())**0.5
return numpy.matrix(ED)

Ⅷ python 怎么查看一个矩阵的维数

都是复制党,网络知道回答真的质量太低了,真的很心疼,言归正传

利用numpy求矩阵维数:

importnumpy#导入numpy模块,piplist可以查看是否安装了该模块

print("数组的维度数目",a1.ndim)



很多人提到了shape函数,这也加上吧

print("数组的维度",a1.shape)

不过这里打印的不是矩阵维数,而是告诉你矩阵维度元祖

比如(28,28,3),能够看出这是一个3维矩阵,但返回的不是维度

Ⅸ python的矩阵可以做什么

python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。
计算矩阵对应行列的最大、最小值、和。
3>>>a1=mat([[1,1],[2,3],[4,2]])
>>> a1
matrix([[1, 1],
[2, 3],
[4, 2]])
计算每一列、行的和
>>>a2=a1.sum(axis=0) #列和,这里得到的是1*2的矩阵
>>> a2
matrix([[7, 6]])
>>>a3=a1.sum(axis=1) #行和,这里得到的是3*1的矩阵
>>> a3
matrix([[2],
[5],
[6]])
>>>a4=sum(a1[1,:]) #计算第一行所有列的和,这里得到的是一个数值
>>> a4
5 #第0行:1+1;第2行:2+3;第3行:4+2
计算最大、最小值和索引
>>>a1.max() #计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值
4
>>>a2=max(a1[:,1]) #计算第二列的最大值,这里得到的是一个1*1的矩阵
>>> a2
matrix([[3]])
>>>a1[1,:].max() #计算第二行的最大值,这里得到的是一个一个数值
3
>>>np.max(a1,0) #计算所有列的最大值,这里使用的是numpy中的max函数
matrix([[4, 3]])
>>>np.max(a1,1) #计算所有行的最大值,这里得到是一个矩阵
matrix([[1],
[3],
[4]])
>>>np.argmax(a1,0) #计算所有列的最大值对应在该列中的索引
matrix([[2, 1]])
>>>np.argmax(a1[1,:]) #计算第二行中最大值对应在该行的索引
1

阅读全文

与python矩阵预算相关的资料

热点内容
命令行参考 浏览:279
怎么初步认识编程 浏览:208
为什么程序员都喜欢谷歌 浏览:891
压缩性骨拆能自愈吗 浏览:277
安卓怎么设置游戏画面 浏览:114
k线上写字源码 浏览:457
单击按钮保存资料源码 浏览:354
华为gt加密卡 浏览:213
河北超融合服务器厂家云主机 浏览:894
芙儿优安全座椅app怎么连接 浏览:294
专业美团骑手app怎么开通 浏览:949
个人音乐分享网站源码 浏览:375
在新电脑上怎么注册加密狗 浏览:123
最后一战游戏源码 浏览:5
phpmysql实例下载 浏览:751
传智黑马安卓非加密 浏览:553
服务器如何配置host 浏览:1001
守望执行命令 浏览:371
加密狗插上去了怎么办 浏览:624
锤子m1怎么把文件夹重置 浏览:213