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()))# 构造对称矩阵 XLambda1, 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))

转载于:https://www.cnblogs.com/mtcnn/p/9422237.html

numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh相关推荐

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

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

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

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

  3. numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()

    首先声明两者所要实现的功能是一致的(将多维数组降位一维),两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflec ...

  4. numpy 辨异(一) —— reshape 与 resize

    0. reshape的参数 reshape的参数严格地说,应该是tuple类型(tuple of ints),似乎不是tuple也成(ints). >>> x = np.random ...

  5. [转载] numpy.dot numpy.linalg.eig numpy.linalg.svd np.linalg.inv 用法 + 例子

    参考链接: Python中的numpy.dot numpy.dot() x是mn 矩阵 ,y是nm矩阵 则x.dot(y) 得到m*m矩阵 >>> np.dot(3, 4) 12 & ...

  6. numpy.linalg.eig() 计算方形矩阵的特征值和特征向量

    在PCA中会用到numpy.linalg.eig()函数 w,v = numpy.linalg.eig(a)  计算方形矩阵a的特征值和右特征向量 参数: a : 待求特征值和特征向量的方阵. 返回: ...

  7. numpy求矩阵的特征值与特征向量(np.linalg.eig函数详解)

    numpy求矩阵的特征值与特征向量(np.linalg.eig) 语法 np.linalg.eig(a) 功能 Compute the eigenvalues and right eigenvecto ...

  8. Github上Pandas,Numpy和 Scipy三个库中20个最常用的函数

    首发于Datartisan数据工匠 写文章 Github上Pandas,Numpy和 Scipy三个库中20个最常用的函数 Datartisan 9 个月前 几个月前,我看到一篇博客中列出了 Gith ...

  9. 如何计算方阵的特征值和特征向量np.linalg.eig()

    关于这部分的理论知识可以参考我的这篇博客<特征值与特征向量>定义.意义及例子,下面主要介绍如何计算方阵的特征值和特征向量 目录 1.np.linalg.eig() 2.例子 3. 应用 4 ...

最新文章

  1. git 建立一个私有模块
  2. Leetcode 95. 不同的二叉搜索树 II 解题思路及C++实现
  3. UA MATH571A 一元线性回归IV 模型诊断
  4. javascript this 关键字学习
  5. C/C++ 回调函数是什么?Intel Realsense里的回调(callback)是什么?
  6. 一文整理四六级考前必背知识点【精简版】
  7. 苹果手机与安坐手机input输入框ios 会有灰色背景解决方法
  8. 【6.24-AppCan移动开发大会倒计时】科大讯飞来了!
  9. 月入30K 的电子工程师很常见吗,需要具备啥素质才配得上这个薪资
  10. STM32通用和复用功能I/O(GPIO和AFIO) ADC DMA
  11. Axure RP9 制作下拉式菜单
  12. 国内外AI绘画『文生图』大模型效果对比
  13. 一个女孩跳楼看到的(漫画)
  14. 51群接龙-社区社群团购专业营销工具
  15. 使用Navicat将表设计导出数据库设计文档
  16. 领峰:黄金价格走势图的分析你懂吗?
  17. FPS游戏透视源码!
  18. 回收站的文件被杀毒软件清空了怎么办
  19. 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问——Win10
  20. cv::Mat 与 CvMat的区别

热门文章

  1. cmstop中实例化controller_admin_content类传递$this,其构造方法中接收到的是--名为cmstop的参数--包含cmstop中所有属性...
  2. 《构建之法》--阅读(第13章-第17章)
  3. UIButton-初识IOS
  4. 程序员编程艺术第十一章:最长公共子序列(LCS)问题
  5. 指针(pointers)和引用(references)区别
  6. 音频信号发生器_1957年,DIY的Hi-Fi 电唱机单电子管音频发生器的音质保真度高...
  7. matlab 小括号
  8. python ssl_Python3 ssl模块不可用的问题
  9. Opencv图像保存到电脑及显示
  10. 已经windows如何在安装linux,如何在已经安装linux情况下安装windows