博客
关于我
Python中的numpy模块解析
阅读量:796 次
发布时间:2023-03-09

本文共 2268 字,大约阅读时间需要 7 分钟。

Numpy入门与实践指南

1. 创建Numpy对象

Numpy的核心便是其强大的N维数组对象(ndarray)。

维度(dimensions)决定了数组的轴数量,而秩(rank)则指数组的轴的个数。Numpy最重要的功能之一是通过array()函数将各种输入数据(如列表、元组、数组或其他序列类型)转换为ndarray。默认情况下,函数会根据输入数据推断数据类型或直接复制输入内容。
例如:

import numpy as npdata = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]ndarray_object = np.array(data)

通过指定形状和数据类型,可以快速创建满足需求的数组:

ndarray_object = np.ones((3, 4))  # 创建3x4的全1数组ndarray_object = np.zeros((3, 4))  # 创建3x4的全0数组

此外,asarray()函数可以将输入转换为ndarray(若输入已经是ndarray则不复制):

import numpy as nparr = np.asarray([1, 2, 3, 4, 5])

range()的扩展版本arrange()可以返回一个ndarray:

arr = np.arange(10)  # 返回[0, 1, 2, ..., 9]

2. 数据类型管理

Numpy的dtype属性决定了如何解释数组中的数据。需要注意的是,直接修改数组的数据类型是不可行的,必须使用astype()方法进行转换:

arr = np.array([1, 2, 3], dtype=np.float64)arr = arr.astype(np.int32)  # 将数组转换为整数类型

3. 数组与标量的运算

Numpy支持数组间和标量间的算术运算,这些运算会自动扩展到数组的所有元素。

例如:

a = np.array([1, 2, 3])b = np.array([4, 5, 6])c = a + b  # 结果为[5, 7, 9]c = a * 2  # 结果为[2, 4, 6]

同时,数组与标量的运算也会自动扩展到所有元素:

a = np.array([1, 2, 3])b = 2 * a  # 结果为[2, 4, 6]

当运算涉及不同大小的数组时,Numpy会自动进行广播(broadcasting)操作,确保运算可以正确进行。

4. 基本索引与切片

Numpy的数组支持灵活的索引和切片操作。

例如:

a = np.array([1, 2, 3, 4, 5])b = a[1:3]  # 切片结果为[2, 3]

切片操作返回一个新数组,而不是原数组的视图。若需要复制切片内容,可以使用copy()方法:

c = b[1:3].copy()  # 复制切片内容

5. 数组转置与轴对换

通过reshape()方法,可以改变数组的形状。例如:

a = np.arange(15).reshape((3, 5))a

转置数组可以通过transpose()方法实现:

a = a.transpose()  # 转置为(5, 3)

6. 函数与方法总览

Numpy提供了丰富的函数和方法来辅助数组操作。以下是一些常用工具:

  • 创建数组:

    ones(), zeros(), empty(), ones_like(), zeros_like()

    • 例如:
      arr = np.ones((3, 4))  # 创建3x4的全1数组arr = np.empty((2, 2))  # 创建2x2的空数组
  • 数据类型转换:

    astype(), atleast_1d(), atleast_2d(), atleast_3d()

  • 数组操作:

    stack(), concatenate(), diagonal(), split(), join()

  • 数组索引:

    take(), drop(), item()

  • 数组变换:

    ravel(), reshape(), repeat(), resize(), squeeze()

  • 数组分析:

    argmax(), argmin(), argsort(), max(), min()

  • 元素操作:

    choose(), compress(), cumsum(), cumprod(), sum()

  • 统计与数学运算:

    mean(), std(), var(), cov()

  • 线性代数操作:

    dot(), cross(), outer()

7. 布尔数组操作

布尔数组的创建与处理也是Numpy的一大特点。

例如:

a = np.array([1, 2, 3, 4, 5])b = a > 2  # 创建布尔数组,表示哪些元素大于2

布尔数组的运算需要使用&(与)和|(或)运算符,而非Python的and和or:

c = b & a > 3  # 结果为True表示元素大于3

8. 数组转置与轴对换

通过reshape()方法,可以改变数组的形状。例如:

a = np.arange(15).reshape((3, 5))a

转置数组可以通过transpose()方法实现:

a = a.transpose()  # 转置为(5, 3)

总结

通过上述内容,可以看到Numpy在数组操作、数据类型管理、数组与标量运算等方面的强大功能。这些工具能够极大地提高数据处理效率,适用于科学计算、数据分析等领域。

转载地址:http://cvlfk.baihongyu.com/

你可能感兴趣的文章
python中什么是实例方法_在Python中创建实例方法对象的不同方法
查看>>
Python中使用cutecharts实现简单的手绘风格的图表
查看>>
python中使用dxfgrabber,解析dxf文件信息生成obj文件
查看>>
Python中使用ncmbot玩转网易云音乐
查看>>
Python中使用PIL快速实现二值图
查看>>
Python中使用PIL快速实现灰度图
查看>>
Python中使用pip install ncmbot时各种错误解决办法
查看>>
Python中使用requests和parsel爬取喜马拉雅电台音频
查看>>
Python中使用turtle绘制多个同心圆
查看>>
Python中使用turtle绘制棋盘详解
查看>>
Python中使用wordcloud生成漂亮的中文词云
查看>>
Python中使用wxpy定时机器人给微信好友发送每日一文
查看>>
Python中使用zip()并行迭代
查看>>
Python中使用推导式创建序列
查看>>
Python中信号处理程序和atexit处理程序的调用
查看>>
Python中关于txt的简单读写模式与操作
查看>>
Python中关于类和函数的初体验之"__init__"和"__str__"不是"_init_"和"_str_"
查看>>
python中函数接受参数为*args, **kwargs怎么办
查看>>
Python中切片的高效迭代
查看>>
python中列表乘法、eval、lambda、hasattr、assert、*(星)等的用法
查看>>