Py学习  »  Python

python numpy 初识

生信修炼手册 • 3 年前 • 457 次点击  
欢迎关注”生信修炼手册”!
numpy是python的一个第三方模块,以多维数组对象为核心,提供了强大的科学计算能力和超快的运行速度,常和scipy, matplotlib等模块一起协同作用,是python中科学计算相关的基础模块。

numpy中的多维数组称之为ndarray, 是由一系列相同数据类型的对象构成的集合。在numpy中,最基本的构建矩阵的方法是通过array函数,用法如下

>>> import numpy>>> a = numpy.array([1, 2, 3])>>> type(a)<class 'numpy.ndarray'>>>> numpy.array([(1, -2, 2), (3, 2, 0)])array([[ 1, -2,  2],       [ 3,  2,  0]])

对于多维数组,有以下基本属性和操作方法

1. 基本属性

numpy中的数组具有维度,数据类型等基本属性,示例如下

>>> a = numpy.array([(1, -2, 2), (3, 2, 0)])>>> aarray([[ 1, -2,  2],       [ 3,  2,  0]])# 数组的维度,这里是2维数组>>> a.ndim2# 返回值为一个元组,记录每个维度的尺寸>>> a.shape(2, 3)# 数组中元素的总数>>> a.size6# 数组中元素的基本数据类型>>> a.dtypedtype('int32')

2. 构建方法

numpy中多维数组的构建方式有多种,示例如下

# 类似内置的range函数# 创建等差数列>>> np.arange(1, 6)array([1, 2, 3, 4, 5])# 设置步长>>> np.arange(1, 10, 3)array([1, 4, 7])# 和arange不同,指定生成的元素个数,然后自动划分步长>>> np.linspace(0, 8, 3)array([0., 4., 8.])# reshape重新定义矩阵维度>>> a = numpy.arange(6).reshape(3, 2)>>> aarray([[0, 1],       [2, 3],       [4, 5]])# 初始化一个矩阵,全部用0填充>>> np.zeros((2, 4))array([[0., 0., 0., 0.],       [0., 0., 0., 0.]])# 初始化一个矩阵,全部用1填充>>> np.ones((2, 4))array([[1., 


    
1., 1., 1.],       [1., 1., 1., 1.]])# 初始化一个矩阵,用随机数进行填充>>> np.empty((2, 3))array([[-5.22979145e-299,  1.28420031e+294,  1.96049329e+289],       [-4.00921237e-294,  3.60935879e+207,  1.31819562e+294]])

3. 切片

numpy中的矩阵可以进行切片,一维数组的切片操作和普通的python序列对象相同,用法如下

>>> a = numpy.arange(10)>>> aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>> a[2]2>>> a[2:5]array([2, 3, 4])>>> a[:6:2] = -1>>> aarray([-1,  1, -1,  3, -1,  5,  6,  7,  8,  9])>>> a[::-1]array([ 9,  8,  7,  6,  5, -1,  3, -1,  1, -1])>>> for i in a:...     print(i)...-11-13-156789

多维数组在每个维度上都可以进行切片,以二维数组为例,示例如下

>>> a = numpy.arange(25).reshape(5,5)>>> aarray([[ 0,  1,  2,  3,  4],       [ 5,  6,  7,  8,  9],       [10, 11, 12, 13, 14],       [15, 16, 17, 18, 19],       [20, 21, 22, 23, 24]])>>># 访问第二行,第三列对应的元素>>> a[2, 3]13# 访问1到5行,第一列对应的元素>>> a[0:5, 1]array([ 1,  6, 11, 16, 21])# :表示取所有的元素


    
>>> a[1:3, :]array([[ 5,  6,  7,  8,  9],       [10, 11, 12, 13, 14]])# 也可以直接不写,默认就是取所有元素>>> a[1:3]array([[ 5,  6,  7,  8,  9],       [10, 11, 12, 13, 14]])

4. 矩阵运算

numpy可以方便的进行向量运算和矩阵操作,用法示例如下

>>> a = np.arange(1, 6)>>> aarray([1, 2, 3, 4, 5])# 向量操作,加减乘除>>> a - 1array([0, 1, 2, 3, 4])>>> a + 2array([3, 4, 5, 6, 7])>>> a * 3array([ 3,  6,  9, 12, 15])>>> a / 2array([0.5, 1. , 1.5, 2. , 2.5])# 矩阵运算,乘法>>> a = np.arange(6).reshape(2, 3)>>> b = np.arange(9).reshape(3, 3)>>> a @ barray([[15, 18, 21],       [42, 54, 66]])>>> a.dot(b)array([[15, 18, 21],       [42, 54, 66]])

除了以上基本概念外,numpy还提供了丰富的矩阵操作的方法和函数,后续再详细介绍。

·end·

—如果喜欢,快分享给你的朋友们吧—



原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!
本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
  更多精彩


  写在最后


转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。


扫描下方二维码,关注我们,解锁更多精彩内容!


一个只分享干货的

生信公众号





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/64153
 
457 次点击