[Python进阶] 数据处理:Numpy入门

10.3 NumPy

10.3.1 NumPy介绍

NumPy是Python编程语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的名称源自数值包装(Numerical Package),其包含许多针对数值运算的函数,包含数学、逻辑、数组形状变换等。
主要特性如下:
多维数组对象(ndarray):这是NumPy的核心内容,提供了强大的多维数组对象。这个对象能够存储不同类型的数据(整数、浮点数、字符串等),并且可以灵活地调整大小。
数学函数库:NumPy提供了大量的数学函数,可以对数组进行各种计算。这些函数包括线性代数、傅里叶变换、排序等。
广播机制:广播机制允许在维度数不同的数组之间进行数学运算,使得操作更加简单和直观。
高效的内存管理:NumPy使用一种称为缓冲区(buffer)的机制来管理内存,使得数据的存储和访问更加高效。
集成C/C++和Fortran代码:NumPy的另一个强大之处是它可以轻松地调用C、C++和Fortran的代码,这使得NumPy可以与许多高性能的数值库进行无缝集成。
高效的I/O操作:NumPy的数据可以直接存储在二进制文件中,这使得数据的读取和写入更加高效。
跨平台兼容性:NumPy在各种操作系统上都可以使用,包括Windows、Linux和Mac OS X。
总的来说,NumPy为Python提供了一个强大的数值计算平台,使得Python成为一种流行的科学计算语言。

10.3.2 NumPy入门

Numpy的安装:

pip install numpy
验证:
from numpy import eye
print(eye(3))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]

10.3.3 Numpy数据类型

NumPy中的数据类型主要包括整数、浮点数、复数、布尔值、字符串、Python对象类型等。
具体来说,NumPy定义了一些特定的数据类型,包括布尔类型(bool/bool_)、整型(int8/int16/int32/int64)、无符号整型(uint8/uint16/uint32/uint64)、浮点数类型(float16/float32/float64)以及复数类型(complex64/complex128)。
使用dtype可以指定创建数组的数据类型,默认的浮点数是float64。也可以通过类型代码指定数据类型。如果想要改变数组的数据类型,可以使用astype函数。

import numpy as np  
  
# 创建一个包含不同整数类型的数组  
a = np.array([1, 2, 3, 4, 5], dtype=np.int32)  
print(a)
# 创建一个包含不同浮点数的数组  
b = np.array([1.1, 2.2, 3.3, 4.4, 5.5], dtype=np.float32)  
print(b)
# 创建一个包含复数的数组  
c = np.array([1+2j, 2+3j, 3+4j], dtype=np.complex128)  
print(c)
# 创建一个包含字符串的数组  
d = np.array(['hello', 'world', 'numpy'], dtype=np.unicode_)  
print(d)

10.3.4 Ndarray对象

ndarray是NumPy中的核心数据结构,它是一个多维数组,可以存储不同类型的数据。它具有许多有用的属性和方法,可以用于进行各种数组操作和数学计算。
ndarray是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。
下面是一些关于Ndarray对象的例子:

import numpy as np  
  
a = np.array([1, 2, 3, 4, 5])  
print(a)

[1 2 3 4 5]

import numpy as np  
  
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  
print(a)

[[1 2 3]
[4 5 6]
[7 8 9]]

Ndarray对象和List对象比较
相似之处:

  • 它们都可以存储不同类型的数据,例如整数、浮点数、字符串等。
  • 它们都可以存储多个数据元素,并且可以通过索引或切片来访问和操作这些元素。
  • 它们都具有一些基本的数学操作,如加、减、乘、除等。
    不同之处:
  • Ndarray对象是NumPy库中的多维数组对象,而list对象是Python内置的数据类型。
  • Ndarray对象是固定大小的,一旦创建,不能改变其大小。而list对象是动态的,可以随时添加或删除元素,也可以改变其大小。
  • Ndarray对象具有更多的属性和方法,可以进行更高级的数组操作和数学计算。而list对象则相对较少。
  • Ndarray对象支持广播机制,可以在不同形状的数组之间进行数学运算。而list对象则不支持广播机制。
  • Ndarray对象可以存储大量的数据,并且可以利用NumPy库提供的函数进行高效的数值计算和数据处理。而list对象则相对较小,并且Python内置的函数在处理大量数据时可能效率较低。

10.3.5 NumPy常见操作

创建数组

import numpy as np  
  
# 创建一个包含整数的数组  
a = np.array([1, 2, 3, 4, 5])  
print(a)  
  
# 创建一个包含浮点数的数组  
b = np.array([1.1, 2.2, 3.3, 4.4, 5.5])  
print(b)  
  
# 创建一个包含字符串的数组  
c = np.array(['hello', 'world', 'numpy'])  
print(c)

数组切片和索引

import numpy as np  
  
# 通过切片获取数组的一部分元素  
sliced_array = a[1:4]  # 获取索引1到3的元素,不包括0索引  
print(sliced_array)  
  
# 通过索引获取单个元素  
element = a[2]  # 获取第三个元素  
print(element)

数组重塑和重塑形状

import numpy as np  
  
# 创建一个二维数组  
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  
print(array_2d)  
  
# 将二维数组重塑为一维数组  
reshaped_array = array_2d.reshape(-1)  # -1表示自动计算该轴的大小  
print(reshaped_array)

数组数学运算

import numpy as np  
  
# 对数组执行加法运算  
added_array = a + b  
print(added_array)  
  
# 对数组执行减法运算  
subtracted_array = a - b  
print(subtracted_array)

相关推荐

  1. [Python] 数据处理Numpy入门

    2024-02-06 05:14:02       28 阅读
  2. Python Numpy入门学习:基础与

    2024-02-06 05:14:02       27 阅读
  3. python数据处理numpy

    2024-02-06 05:14:02       17 阅读
  4. Python数据处理NumPy

    2024-02-06 05:14:02       5 阅读
  5. Python学习入门(2)——功能

    2024-02-06 05:14:02       13 阅读
  6. Python数据处理和常用库(如NumPy、Pandas)

    2024-02-06 05:14:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-06 05:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-06 05:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-06 05:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-06 05:14:02       18 阅读

热门阅读

  1. 蓝桥杯刷题--python-1

    2024-02-06 05:14:02       39 阅读
  2. 初始化整形数组,后从小到大冒泡排序

    2024-02-06 05:14:02       34 阅读
  3. 基于单片机的LED显示系统

    2024-02-06 05:14:02       30 阅读
  4. 蓝桥杯刷题--python-2

    2024-02-06 05:14:02       28 阅读
  5. 实习记录——第十三天

    2024-02-06 05:14:02       33 阅读
  6. 【C/C++ 15】C++11右值引用

    2024-02-06 05:14:02       28 阅读
  7. 机器学习小结

    2024-02-06 05:14:02       33 阅读
  8. 机器学习本科课程 实验5 贝叶斯分类

    2024-02-06 05:14:02       26 阅读
  9. 嵌入式C语言学习——基于Linux与GCC

    2024-02-06 05:14:02       33 阅读