社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python numpy 初识

生信修炼手册 • 5 年前 • 671 次点击  
欢迎关注”生信修炼手册”!
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
 
671 次点击