1. np.hstack np.column_stack

>>> np.hstack([np.array([1, 2, 3]), np.array([4, 5, 6])])
array([1, 2, 3, 4, 5, 6]) >>> np.column_stack([np.array([1, 2, 3]), np.array([4, 5, 6])])
array([[1, 4],
[2, 5],
[3, 6]])

当然对等地,也存在,np.vstack, np.row_stack

>>> np.vstack([np.array([1, 2, 3]), np.array([4, 5, 6])])
array([[1, 2, 3],
[4, 5, 6]]) >>> np.row_stack([np.array([1, 2, 3]), np.array([4, 5, 6])])
array([[1, 2, 3],
[4, 5, 6]])
# 两者近乎等效

2. np.linalg.eig() np.linalg.eigh()

首先一点,不管二者处理的是不是对称阵,两者处理的首先是方阵(square array)。

两者均用于矩阵特征分解,np.linalg.eigh()适用于对称矩阵,可见矩阵分析中针对对称矩阵的特征值分解有一套特殊的不同于一般矩阵的理论。

def main():

    X = np.random.randn(3, 3)
X = X.triu()
X += (X.T-np.diag(X.diagonal()))
# 构造对称矩阵 X
Lambda1, Q1 = np.linalg.eig(X)
Lambda2, Q2 = np.linalg.eigh(X) print(Lambda1)
# [ 1.53176315 -0.35907022 -1.8924684 ]
# 排序不太严格
print(Lambda2)
# [-1.8924684 -0.35907022 1.53176315]
# 严格的升序 if __name__ == '__main__':
main()

3. array.T vs array.transpose()

形式上array.T自然比array.transpose()这样一个函数调用形式稍显简洁。

>>> x = np.ones((3, 4))
>>> x.T
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> x.transpose()
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

事实上,x.T == x.transpose(range(x.ndim)[::-1])

>>> x.transpose(range(x.ndim)[::-1])
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])

4. np.triu np.tril

np.triu:upper triangle of an array

np.tril:lower triangle of an array

>>> x = np.array([[1, 2, 3], [3, 4, 5], [5, 6, 7], [7, 8, 9]])
>>> x
array([[1, 2, 3],
[3, 4, 5],
[5, 6, 7],
[7, 8, 9]])
>>> np.triu(x)
array([[1, 2, 3],
[0, 4, 5],
[0, 0, 7],
[0, 0, 0]])
>>> np.tril(x)
array([[1, 0, 0],
[3, 4, 0],
[5, 6, 7],
[7, 8, 9]])

5. concatenate与hstack/vstack

注意,要进行拼接的数组都是以tuple_like((a, b))的形式传递给这三个函数的,

np.concatenate((a, b), axis=0) == np.vstack((a, b))
# 也对应于默认的情况,np.concatenate((a, b))
np.concatenate((a, b), axis=1) == np.hstack((a, b))

numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh的更多相关文章

  1. numpy 辨异(四)—— np.repeat 与 np.tile

    >> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...

  2. numpy 辨异(二) —— np.identity()/np.eye()

    import numpy as np; 两者在创建单位矩阵上,并无区别,两者的区别主要在接口上: np.identity(n, dtype=None):只能获取方阵,也即标准意义的单位阵: np.ey ...

  3. Numpy入门(三):Numpy概率模块和线性代数模块

    Numpy中经常使用到的两个模块是概率模块和线性代数模块,random 和 linalg 两个模块. 概率模块 产生二项分布的随机数:np.random.binomial(n,p,size=-),其中 ...

  4. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  5. numpy.linalg.eig

    1.转置对于二维数组有用,对一位数组无效 2.理解特征值和特征向量的对应关系 a=np.array([[1 ,2, 3],[4, 5, 6],[7, 8, 9]]) a Out[27]: array( ...

  6. numpy中stack、hstack,vstack,dstack函数功能解释

    https://blog.csdn.net/Riverhope/article/details/78922006 https://blog.csdn.net/ygys1234/article/deta ...

  7. 【python】Numpy中stack(),hstack(),vstack()函数详解

    转自 https://blog.csdn.net/csdn15698845876/article/details/73380803 这三个函数有些相似性,都是堆叠数组,里面最难理解的应该就是stack ...

  8. Numpy中的三个常用正态分布相关的函数,randn,standard_normal, normal的区别

    这三个函数都可以返回随机正态分布(高斯Gaussian 分布)的数组,都可以从numpy.random中导出 先看三个函数的参数方式: randn: randn(d0, d1, ..., dn), 返 ...

  9. NumPy 学习 第三篇:矢量化和广播

    矢量化 矢量化是指用数组表达式替换显式的for循环.在Python中循环数组或其他跟数组类似的数据结构时,使用循环会涉及很多开销.NumPy中的矢量化操作把内部循环委托给高度优化的C和Fortran函 ...

随机推荐

  1. 9.3 Binder系统_驱动情景分析_服务获取过程

    4. 服务获取过程 test_client客户端: (1)在用户态先构造name=“hello”的数据(服务的名字是hello),调用ioctl发送数据给service_manager(handle= ...

  2. 快速理解Java中的五种单例模式(转)

    解法一:只适合单线程环境(不好) package test; /** * @author xiaoping * */ public class Singleton { private static S ...

  3. vs2008,2010,2012安装包下载

    近期在csdn学院当老师啦.把自己以学到的东西总结一下,录个视频给大家,也当发一下福利.这些以后都是自己无形的財产.哈哈. 安装与下载编程工具 Vs2008下载地址:http://pan.baidu. ...

  4. Apache与weblogic整合实战(独家研究)

    用apache来处理外界的请求,再把请求转发给wls,这样就行突破wls express版本号的5用户限制 详细配置例如以下 copy ${WLS_Server}/server/lib下的mod_wl ...

  5. 【数学】概念的理解 —— 有序对(ordered pair)

    有序对 (a,b) 是一组对象,不同的顺序意味着不同的对象,(a,b)≠(b,a) 除非 a=b,正是因为对象的相对顺序是有着不同含义的,因此有时也称之为 2 维向量.与之相对的无序对(unorder ...

  6. 高速在MyEclipse中打开jsp类型的文件

    MyEclipse打开jsp时老是要等上好几秒,嗯嗯,这个问题的确非常烦人,事实上都是MyEclipse的"自作聪明"的结果(它默认用Visual Designer来打开的),进行 ...

  7. ps树叶的雕刻

    1.学习了图层建立,通道复制,通道载如.图层复制粘贴透明,色阶改动(ctrl+L),蒙板建立(必须不在背景上),蒙板刻图.蒙板画画(白色,黑色),蒙板填充(ctrl+backspace),(atrl+ ...

  8. sed学习总结

    sed学习总结 sed工作流 测试文件:cat employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manager 103,Raj Reddy,Sysad ...

  9. mysql 悲观锁 的运用

    悲观锁: 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制(也只有数 ...

  10. RSA公钥、私钥、签名和验签

    1 RSA加密算法介绍 RSA又叫非对称加密算法,这类加密算法有一对秘钥,其中一个用来加密一个用来解密.这一对秘钥中你可以选择一个作为私钥(自己保存),另一个作为公钥(对外公开).用私钥加密的内容只能 ...