1 概念理清

2 创建数组

2.1

f1= np.array(
[
[1,2,3,4],
[2,3,4,5],
[3,4,5,6]
]
)

其他代码

a= np.array([
[
[3.4,5,6,8],
[3,2.4,5,7]
],
[ [2.3,4,5,6],
[0.9,5,6,1]
],
[
[9,6.7,3,2],
[1,3,4,5]
]
]) b = np.array((
(
(1,2,3,4),(4,5,6,7),(9,3,4,5)
),
(
(0,2,3,4),(4,5,6,7),(4,5,2,3)
)
))

2.2

  • zeros
  • empty
  • ones
  • eye
# 零矩阵
In [49]: f2 = zeros( (3,4) ) In [50]: f2
Out[50]:
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]]) # 单位矩阵
In [51]: eye(3)
Out[51]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])

2.3

2.3.1 arange

f3 = arange(15).reshape(3,5)

注:

numpy.arange  指向同一个内存空间

>>> arange(15)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])

>>> arange( 10, 30, 5 )

array([10, 15, 20, 25])

2.3.2 linspace

# linspace 等差序列, (开始,结束,元素个数)
In [154]: linspace(2,12,3)
Out[154]: array([ 2., 7., 12.]

2.3.3 logspace

# logspace 等比数列, (开始,结束,元素个数)
* 第一个数 10^2
* 第二个数 10^12
In [155]: logspace(2,12,3)
Out[155]: array([ 1.00000000e+02, 1.00000000e+07, 1.00000000e+12])

2.3.4 random

#random 函数
In [177]: np.random.random()

In [178]: np.random.random((2,3,4))
Out[178]:
array([[[ 0.05126289, 0.66402449, 0.22970131, 0.73774777],
[ 0.72501932, 0.20642975, 0.38318838, 0.70826703],
[ 0.86349343, 0.34179916, 0.32829582, 0.55624637]],

[[ 0.59645461, 0.83145358, 0.85956141, 0.81924494],
[ 0.01116166, 0.71089623, 0.91432385, 0.66226528],
[ 0.5791923 , 0.42764113, 0.56575513, 0.54864404]]])

In [182]: np.random.random_sample((2,3))
Out[182]:
array([[ 0.3591195 , 0.89974204, 0.20622608],
[ 0.64718978, 0.24135722, 0.44665569]])

其它函数array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, rand, randn, fromfunction, fromfile参考:NumPy示例

3 索引,切片和迭代

4 基本运算

In [106]: a = array( [20,30,40,50] )

In [107]: b = arange( 4 )

In [108]: b
Out[108]: array([0, 1, 2, 3]) In [109]: c = a-b In [110]: c
Out[110]: array([20, 29, 38, 47]) In [111]: b**2
Out[111]: array([0, 1, 4, 9]) In [112]: 10*sin(a)
Out[112]: array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854]) In [113]: a<35
Out[113]: array([ True, True, False, False], dtype=bool) In [114]: b+3
Out[114]: array([3, 4, 5, 6]

In [117]: b*3

Out[117]: array([0, 3, 6, 9])

# 矩阵积 dot
第一个矩阵的列 = 第二个矩阵的行

(3*4) *  (4*5)  =  (3*5)

In [115]: f1= np.array(
...: [
...: [1,2,3,4],
...: [2,3,4,5],
...: [3,4,5,6]
...: ]
...: )
...:
...:
...: f2= np.array(
...: [
...: [1,2,3,4,1],
...: [2,3,4,5,2],
...: [3,4,5,6,3],
...: [3,4,5,6,4]
...: ]
...: )
...: In [116]: f1.dot(f2)
Out[116]:
array([[26, 36, 46, 56, 30],
[35, 49, 63, 77, 40],
[44, 62, 80, 98, 50]])

行列式、秩、逆矩阵、转置

In [33]: a
Out[33]:
array([[ 3., 2., 3.],
[ 4., 7., 6.],
[ 7., 8., 11.]]) # 方阵
In [34]: a.shape
Out[34]: (3L, 3L) # 求秩
In [35]: np.linalg.matrix_rank(a)
Out[35]: 3 # 求行列式 In [39]: np.linalg.det(a)
Out[39]: 32.0 # 求逆矩阵
In [40]: b = np.linalg.inv(a) In [41]: b
Out[41]:
array([[ 0.90625, 0.0625 , -0.28125],
[-0.0625 , 0.375 , -0.1875 ],
[-0.53125, -0.3125 , 0.40625]]) # 验证
In [42]: a.dot(b)
Out[42]:
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]]) # 转置
In [43]: a.T
Out[43]:
array([[ 3., 4., 7.],
[ 2., 7., 8.],
[ 3., 6., 11.]]) In [44]: a.transpose()
Out[44]:
array([[ 3., 4., 7.],
[ 2., 7., 8.],
[ 3., 6., 11.]])

[b0044] numpy_快速上手的更多相关文章

  1. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  2. 快速上手Unity原生Json库

    现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...

  3. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手

    原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...

  4. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  5. 快速上手seajs——简单易用Seajs

    快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...

  6. Git版本控制Windows版快速上手

    说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...

  7. Objective-C快速上手

    最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...

  8. Netron开发快速上手(二):Netron序列化

    Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...

  9. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection

    版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...

随机推荐

  1. 利用FOR XML PATH行转列(根据某字段分组,多行数据转成一行,并用逗号隔开)

    CREATE TABLE #TEST(A VARCHAR(10) NULL,B VARCHAR(MAX) NULL) INSERT INTO #TESTSELECT 'A','A001'UNION A ...

  2. Linux 使用grep过滤多个条件及grep常用过滤命令

    这篇文章主要介绍了Linux 使用grep筛选多个条件及grep常用过滤命令,需要的朋友可以参考下 cat log.txt | grep 条件: cat log.txt | grep 条件一 | gr ...

  3. 面试连环炮系列(十):一个线程调用两次start会怎么样

    一个线程调用两次start会怎么样 Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常. 谈谈线程的生命周期和状态转移 新 ...

  4. IT兄弟连 HTML5教程 W3C盒子模型

    日常生活中所见的盒子也就是能装东西的一种箱子,如果家里的东西很多,那么就需要按类别装到不同的箱子中.网页中的内容表现也是一样的,如果页面内容比较多,又想让页面更整洁.更美观.有很好的用户体验,则也需要 ...

  5. (3)一起来看下使用mybatis框架的select语句的源码执行流程吧

    本文是作者原创,版权归作者所有.若要转载,请注明出处.本文以简单的select语句为例,只贴我觉得比较重要的源码,其他不重要非关键的就不贴了 主流程和insert语句差不多,这里主要讲不同的流程,前面 ...

  6. WebShell代码分析溯源(四)

    WebShell代码分析溯源(四) 一.一句话变形马样本 <?php @$_++;$__=("`"^"?").(":"^"} ...

  7. 文字转语音?我只用十行Python代码就搞定了!

    详细使用教程 1.没安装Python的小伙伴需要先安装一下 2.win+r输入cmd打开命令行,输入:pip install baidu-aip,如下安装百度AI的模块. 3.新建文本文档,copy如 ...

  8. alpine制作jdk、jre镜像、自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

  9. Vue学习笔记Day2

    1.mustache语法 如何将data中的文本数据插入到HTML中? 通过使用mustache语法(也就是双大括号),将data中的变量名插入到HTML元素中,显示在页面上. 如下图:并且数据是响应 ...

  10. Flutter学习笔记(22)--单个子元素的布局Widget(Container、Padding、Center、Align、FittedBox、Offstage、LimitedBox、OverflowBox、SizedBox)

    如需转载,请注明出处:Flutter学习笔记(22)--单个子元素的布局Widget(Container.Padding.Center.Align.FittedBox.Offstage.Limited ...