1.Numpy是什么?

numpy是Python的一个科学计算库,提供矩阵运算的功能。

1.1Numpy的导入

import numpy as np #一般都是用numpy的别名来进行操作

1.2Numpy的常用函数

np.array((1.2,2,3,4), dtype=np.int32)

这里是强制定义了np里面的矩阵数据类型,是让其为int32位,如果其中有小数的,都会转换成整数。

numpy向量转为矩阵:

arr1 = np.array([1,2,3,4,5,6,6,6])
print(arr1.reshape(2,4))
reshape完之后,就变成矩阵了
arr1.shape()则显示矩阵的情况,就是是几维矩阵,矩阵的长度如何。
arr1.dtype显示arr1矩阵的数据的类型,这里上边定义的是int类型的
import numpy as np

print(np.array((1.2,2,3,4.1), dtype=np.int32))

arr1 = np.array([1,2,3,4,5,6,6,6])
print(arr1.reshape(2,4))
print(arr1.dtype)
np.linspace(1,10,10)
#起始值为第一个参数,终点值为第二个参数,然后第三个参数是把这个区间的数,分为多少,这里的输出结果是从1到10
矩阵之间是可以运算的,但是要注意的是什么?就是矩阵的长度得是对应的。比如二维对二维,并且相对应运算行的长度得相同
import numpy as np
a = np.array([[1,2,3],[2,3,4]])
b = np.array([[2,3,4],[2,3,4]])
print(a -b)
"""结果输出:[[-1 -1 -1]
[ 0 0 0]]"""

矩阵点乘,行乘列得出结果,看输出结果中的9可以看出,是a的第一行乘以b的第一列。

import numpy as np
a = np.array([[1,2,3],[2,3,4],[1,1,1]])
b = np.array([[2,3,4],[2,3,4],[1,1,1]])
print(np.dot(a,b))
"""输出结果[[ 9 12 15]
[14 19 24]
[ 5 7 9]]
"""

np.floor(矩阵)向下取整,就是传进来的矩阵,如果是3.5,就会变成3这样子

矩阵.ravel()会变成向量

import numpy as np
a = np.array([[1,2,3],[2,3,4],[1,1,1]])
print(a.ravel())
"""输出结果:[1 2 3 2 3 4 1 1 1]"""

矩阵拼接,vstack和hstack,我发现只能凭借相同大小的,就是如果矩阵不等长的话则按照断的来拼接。像矩阵a的第二行,有五个数,但是最终只拼接了三个

import numpy as np
a = np.array([[1,2,3],[2,3,4,5,6],[1,1,1]])
a = np.array([[1,2,3],[2,3,4],[1,1,1]])
print(np.hstack((a,b)))
print(np.vstack((a,b)))
"""输出结果:[[1 2 3 2 3 4]
[2 3 4 2 3 4]
[1 1 1 1 1 1]]
[[1 2 3]
[2 3 4]
[1 1 1]
[2 3 4]
[2 3 4]
[1 1 1]]"""

矩阵切分

按照行来切,这里在第三行和第四行切了,因此,产生了三个矩阵

a = np.floor(10*np.random.random((2,12))) #按行切
print(a)
print(np.hsplit(a,(3,4)))
"""结果:[[ 0. 2. 0. 3. 3. 1. 5. 9. 1. 5. 5. 9.]
[ 5. 5. 1. 7. 3. 0. 8. 3. 4. 7. 0. 7.]]
[array([[ 0., 2., 0.],
[ 5., 5., 1.]]), array([[ 3.],
[ 7.]]), array([[ 3., 1., 5., 9., 1., 5., 5., 9.],
[ 3., 0., 8., 3., 4., 7., 0., 7.]])]"""

按列来分,想切几刀就切几刀,切多少下,只要没超过它的列数,就可以切。

import numpy as np
a = np.floor(10*np.random.random((12,2)))
print(a)
print(np.vsplit(a,3))
"""运行结果[[ 7. 5.]
[ 4. 9.]
[ 9. 9.]
[ 9. 7.]
[ 8. 6.]
[ 4. 4.]
[ 6. 7.]
[ 3. 2.]
[ 8. 1.]
[ 4. 2.]
[ 2. 5.]
[ 0. 0.]]
[array([[ 7., 5.],
[ 4., 9.],
[ 9., 9.],
[ 9., 7.]]), array([[ 8., 6.],
[ 4., 4.],
[ 6., 7.],
[ 3., 2.]]), array([[ 8., 1.],
[ 4., 2.],
[ 2., 5.],
[ 0., 0.]])]"""

至于访问切出来的矩阵,很简单,就是参考数组,既然切成了多个矩阵,那就是按照不同的下标来访问咯,比如上边的结果想拿到第一个数组的第一个数字,则只要赋值了之后,用

赋值的变量[0][0][0]就可以访问到了,注意数组嵌套的情况。

 

Numpy的小总结的更多相关文章

  1. 使用numpy的小惊喜

    今天使用 numpy.true_divide 发现个有趣的事情, 下面的代码18.19行如果去掉,就会报下面的  RuntimeWarning def multivalue_divide(timese ...

  2. Python的numpy库下的几个小函数的用法

    numpy库是Python进行数据分析和矩阵运算的一个非常重要的库,可以说numpy让Python有了matlab的味道 本文主要介绍几个numpy库下的小函数. 1.mat函数 mat函数可以将目标 ...

  3. 【python学习小知识】求绝对值和numpy和tensor的相互转换

    一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...

  4. numpy 小示例

    import numpy as np 生成 3*4 的由  0 组成的二维数组 >>> np.zeros((3,4)) array([[0., 0., 0., 0.], [0., 0 ...

  5. 如何通过numpy获得二维或多维数组的最大、小值索引

    虽然numpy数组中有argmax的函数可以获得数组的最大值的索引,但该函数获得的是numpy数组平铺后的索引,也就是一维索引.那么要怎样才能获得二维索引呢?实现很简单,比如我下面的代码: impor ...

  6. numpy安装失败-小失误

    1. 古老的方法:            安装python numpy库AMD64 失败,网上的教程是这样的:http://www.cnblogs.com/zhuyp1015/archive/2012 ...

  7. Numpy中的一点小知识

    train_set_x_orig, train_set_y, test_set_x_orig, test_set_y, classes = load_dataset()train_set_x_orig ...

  8. 不到一百行实现一个小siri

    想要容易理解核心的特征计算的话建议先去看看我之前的听歌识曲的文章,传送门:http://www.cnblogs.com/chuxiuhong/p/6063602.html 本文主要是实现了一个简单的命 ...

  9. [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决

    这篇文章主要讲述Python如何安装Numpy.Scipy.Matlotlib.Scikit-learn等库的过程及遇到的问题解决方法.最近安装这个真是一把泪啊,各种不兼容问题和报错,希望文章对你有所 ...

随机推荐

  1. 201521123034《Java程序设计》第十一周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 多线程的冲突 互斥共享(有时两个或两个以上的线程需要同时对 而线程之间如果不加以控制,会产生一种情况-竞争) sy ...

  2. 201521123004 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 答: 异常的概念上周的思维导图大致体现,这周就归纳一下错误调试 由于多线程的内容比较散,我就直接用文字总结 ...

  3. 201521123054 《Java程序设计》 第十周学习总结

    1. 本周学习总结 2. 书面作业 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? 无论是否抛出异常,也无论从什么地方返回,finally语句 ...

  4. 201521123074 《Java程序设计》第1周学习总结

    1. 本章学习总结第一周学习总结: 学习了java语言的历史与发展,运行过程,安装了eclipse编程平台,试着编写了java程序. 2. 书面作业: Q 1.为什么java程序可以跨平台运行?执行j ...

  5. audio标签

    实例 一段简单的 HTML 5 音频: <audio src="someaudio.wav"> 您的浏览器不支持 audio 标签. </audio> 亲自 ...

  6. 框架应用:Spring framework (五) - Spring MVC技术

    软件开发中的MVC设计模式 软件开发的目标是减小耦合,让模块之前关系清晰. MVC模式在软件开发中经常和ORM模式一起应用,主要作用是将(数据抽象,数据实体传输和前台数据展示)分层,这样前台,后台,数 ...

  7. 第二部分----CSS的基础语法

    PART-1 CSS的基础常识 一.什么是CSS? W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化.其倡导中第一条的"表现"指的便可以说 ...

  8. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  9. 关于centOS 7的服务启动,端口查询,防火墙管理

    端口的查询与开启 CentOS 7 默认没有使用iptables,所以通过编辑iptables的配置文件来开启80端口是不可以的CentOS 7 采用了 firewalld 防火墙 如要查询是否开启8 ...

  10. JS中如何巧妙的用事件委托

    常见场景:页面有多个相同的按钮需要绑定同样的事件逻辑. 如下HTML,实现:点击每个按钮,当它的 data-id不为null的时候输出它的data-id(实际业务中会有更复杂的逻辑) <ul i ...