VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • numpy 基础入门 - 30分钟学会numpy(8)

 

合并数组

使用numpy下的vstack(垂直方向)和hstack(水平方向)函数:

1
2
3
4
5
6
7
8
9
10
>>> a = np.ones((2,2))  
>>> b = np.eye(2)  
>>> print np.vstack((a,b))  
[[ 1.  1.]  
 [ 1.  1.]  
 [ 1.  0.]  
 [ 0.  1.]]  
>>> print np.hstack((a,b))  
[[ 1.  1.  1.  0.]  
 [ 1.  1.  0.  1.]]

看一下这两个函数有没有涉及到浅拷贝这种问题:

1
2
3
4
5
6
7
8
9
>>> c = np.hstack((a,b))  
>>> print c  
[[ 1.  1.  1.  0.]  
 [ 1.  1.  0.  1.]]  
>>> a[1,1] = 5  
>>> b[1,1] = 5  
>>> print c  
[[ 1.  1.  1.  0.]  
 [ 1.  1.  0.  1.]]

通过上面可以知道,这里进行是深拷贝,而不是引用指向同一位置的浅拷贝。

 

深拷贝数组

数组对象自带了浅拷贝和深拷贝的方法,但是一般用深拷贝多一些:

1
2
3
4
5
6
7
>>> a = np.ones((2,2))  
>>> b = a  
>>> b is a  
True  
>>> c = a.copy()  #深拷贝  
>>> c is a  
False

 

基本的矩阵运算

转置:

1
2
3
4
5
6
7
>>> a = np.array([[1,0],[2,3]])  
>>> print a  
[[1 0]  
 [2 3]]  
>>> print a.transpose()  
[[1 2]  
 [0 3]]

numpy.linalg模块中有很多关于矩阵运算的方法:

 

特征值、特征向量:

1
2
3
4
>>> a = np.array([[1,0],[2,3]])  
>>> nplg.eig(a)  
(array([ 3.,  1.]), array([[ 0.        ,  0.70710678],  
       [ 1.        , -0.70710678]]))

相关教程