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. IDEACould not autowire. No beans of 'xxxMapper' type found.

    作为一名刚开始使用idea的新手,最近在使用maven+springMVC框架时遇到了这样一个问题:Could not autowire. No beans of 'xxxMapper' type f ...

  2. [Angular2 Router] Redirects and Path Matching - Avoid Common Routing Pitfall

    In this tutorial we are going to learn how we can can configure redirects in the angular 2 router co ...

  3. 一次性能优化将filter转换

    有一条SQL性能有问题,在运行计划中发现filter.遇到它要小心了,类似于nestloop.我曾经的blog对它有研究探索运行计划中filter的原理.用exists极易引起filter. 优化前: ...

  4. jQuery实现多种切换效果的图片切换的五款插件

    1:Nivo SliderNivoslider:丰富的图片切换效果 官方网址:https://themeisle.com/plugins/nivo-slider 查看演示:https://www.he ...

  5. 【Codeforces Round #439 (Div. 2) B】The Eternal Immortality

    [链接] 链接 [题意] 求b!/a!的最后一位数字 [题解] b-a>=20的话 a+1..b之间肯定有因子2和因子5 答案一定是0 否则暴力就好 [错的次数] 在这里输入错的次数 [反思] ...

  6. 【42.38%】【BZOJ 3196】二逼平衡树

    Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1363 Solved: 579 [Submit][Status][Discuss] Descripti ...

  7. [AngularJS] Directive for top scroll bar

    angular.directive('dblScroll', dblScroll) dblSroll.$inject = [ '$timeout' ]; function dblScroll($tim ...

  8. 仿凤凰时时彩代购平台源代码[ASP+MSSQL]完整下载

    源代码简单介绍 : 适用范围:  时时彩源代码,时时彩程序,开奖平台源代码,投注平台源代码,仿凤凰时时彩源代码 执行环境:  ASP+MSSQL 其它说明:仿凤凰时时彩代购平台源代码.网上售价8000 ...

  9. maven打包到本地库

    mvn install:install-file -DgroupId=com.alipay -DartifactId=com.alipay.core -Dversion=20180104135026 ...

  10. Qt on Android: http下载与Json解析

    百度提供有查询 ip 归属地的开放接口,当你在搜索框中输入一个 ip 地址进行搜索,就会打开由 ip138 提供的百度框应用,你能够在框内直接输入 ip 地址查询.我查看了页面请求,提取出查询 ip ...