算法 中兴电话面试

一、矩阵求逆计算是在python的哪个库
import numpy as np

a=np.array([[1,2,3],[4,5,6],[7,8,9]])
a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])

#a数组的转置直接使用.transpose()函数即
求数组的逆

a
array([[ 3., 2., 3.],
[ 4., 7., 6.],
[ 7., 8., 11.]])

np.linalg.inv(a)
array([[ 0.90625, 0.0625 , -0.28125],
[-0.0625 , 0.375 , -0.1875 ],
[-0.53125, -0.3125 , 0.40625]])

#验证
np.dot(a,np.linalg.inv(a))
array([[ 1.00000000e+00, -2.22044605e-16, 0.00000000e+00],
[ 4.44089210e-16, 1.00000000e+00, 0.00000000e+00],
[-8.88178420e-16, 0.00000000e+00, 1.00000000e+00]])
二、互换一个三维矩阵的第二和第三列

numpy应该是一个和常用的包了,但是在百度查了很久,也没有查到如何交换两列(交换两行的有),所以查看了其他的文档,找到了方法。
交换两行
比如a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]]),想要交换第二行和第三行,看起来很简单,直接写代码:

import numpy as np
a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]])
tmp = a[1]
a[1] = a[2]
a[2] = tmp
运行结果却为:

array([[1, 2, 3],
[1, 6, 5],
[1, 6, 5],
[9, 3, 4]])
原因是因为tmp = a[1]并非a[1]的一个copy,而是一个“别名”,那么我们改写成:

import numpy as np
a = np.array([[1,2,3],[2,3,4],[1,6,5], [9,3,4]])
tmp = np.copy(a[1])
a[1] = a[2]
a[2] = tmp
运行结果为:

发布了34 篇原创文章 · 获赞 4 · 访问量 3048

猜你喜欢

转载自blog.csdn.net/qq_41558173/article/details/96578264
今日推荐