Python 教程之 Numpy(1)—— 什么是 Numpy?

简介: Python 教程之 Numpy(1)—— 什么是 Numpy?

Numpy是一个通用的数组处理包。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。它是使用 Python 进行科学计算的基础包。

除了其明显的科学用途外,Numpy 还可以用作通用数据的高效多维容器。

Numpy 中的数组

Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 Numpy 中,数组的维数称为数组的秩。给出数组沿每个维的大小的整数元组称为数组的形状。Numpy 中的数组类称为ndarray。Numpy 数组中的元素可以使用方括号访问,并且可以使用嵌套的 Python 列表进行初始化。

创建 Numpy 数组 Numpy

中的数组可以通过多种方式创建,具有不同数量的 Rank,定义数组的大小。数组也可以使用各种数据类型来创建,例如列表、元组等。结果数组的类型是从序列中元素的类型推导出来的。

注意: 数组的类型可以在创建数组时显式定义。

# 用于创建数组的 Python 程序
import numpy as np
# 创建 rank 1 数组
arr = np.array([1, 2, 3])
print("Array with Rank 1: \n",arr)
# 创建 rank 2 数组
arr = np.array([[1, 2, 3],
                [4, 5, 6]])
print("Array with Rank 2: \n", arr)
# 从元组创建数组
arr = np.array((1, 3, 2))
print("\nArray created using "
      "passed tuple:\n", arr)

输出:

Array with Rank 1: 
 [1 2 3]
Array with Rank 2: 
 [[1 2 3]
 [4 5 6]]
Array created using passed tuple:
 [1 3 2]

访问数组索引

在 numpy 数组中,索引或访问数组索引可以通过多种方式完成。要打印数组的范围,需要进行切片。数组切片是在新数组中定义一个范围,该数组用于打印原始数组中的一系列元素。由于切片数组包含原始数组的一系列元素,因此在切片数组的帮助下修改内容会修改原始数组内容。

# 用于演示 numpy 数组中的索引的 Python 程序
import numpy as np
# 初始数组
arr = np.array([[-1, 2, 0, 4],
                [4, -0.5, 6, 0],
                [2.6, 0, 7, 8],
                [3, -7, 4, 2.0]])
print("Initial Array: ")
print(arr)
# 使用切片方法打印一系列数组
sliced_arr = arr[:2, ::2]
print ("Array with first 2 rows and"
    " alternate columns(0 and 2):\n", sliced_arr)
# 以特定索引打印元素
Index_arr = arr[[1, 1, 0, 3], 
                [3, 2, 1, 0]]
print ("\nElements at indices (1, 3), "
    "(1, 2), (0, 1), (3, 0):\n", Index_arr)

输出:

Initial Array: 
[[-1.   2.   0.   4. ]
 [ 4.  -0.5  6.   0. ]
 [ 2.6  0.   7.   8. ]
 [ 3.  -7.   4.   2. ]]
Array with first 2 rows and alternate columns(0 and 2):
 [[-1.  0.]
 [ 4.  6.]]
Elements at indices (1, 3), (1, 2), (0, 1), (3, 0):
 [ 0. 54.  2.  3.]

基本数组操作

在 numpy 中,数组允许对特定数组或数组组合执行广泛的操作。这些运算包括一些基本的数学运算以及一元和二元运算。

# 演示单个数组的基本操作的 Python 程序
import numpy as np
# 定义数组 1
a = np.array([[1, 2],
              [3, 4]])
# 定义数组 2
b = np.array([[4, 3],
              [2, 1]])
# 每个元素加 1
print ("Adding 1 to every element:", a + 1)
# 从每个元素中减去 2
print ("\nSubtracting 2 from each element:", b - 2)
# 数组元素的总和执行一元运算
print ("\nSum of all array "
       "elements: ", a.sum())
# 添加两个数组执行二元运算
print ("\nArray sum:\n", a + b)

输出:

Adding 1 to every element:
 [[2 3]
 [4 5]]
Subtracting 2 from each element:
 [[ 2  1]
 [ 0 -1]]
Sum of all array elements:  10
Array sum:
 [[5 5]
 [5 5]]

Numpy 中的数据类型

每个 Numpy 数组都是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。每个 ndarray 都有一个关联的数据类型 (dtype) 对象。此数据类型对象 (dtype) 提供有关数组布局的信息。。ndarray 的值存储在缓冲区中,可以将其视为可以由 dtype 对象解释的连续内存字节块。Numpy 提供了大量可用于构造数组的数值数据类型。在创建数组时,Numpy 会尝试猜测数据类型,但构造数组的函数通常还包含一个可选参数来显式指定数据类型。


构造数据类型对象

在 Numpy 中,除非需要特定的数据类型,否则不需要定义数组的数据类型。Numpy 尝试猜测未在构造函数中预定义的数组的数据类型。

# Python 程序创建数据类型对象
import numpy as np
# Numpy 猜测的整数数据类型
x = np.array([1, 2])  
print("Integer Datatype: ")
print(x.dtype)         
# Numpy 猜测的浮点数据类型
x = np.array([1.0, 2.0]) 
print("\nFloat Datatype: ")
print(x.dtype)  
# 强制数据类型
x = np.array([1, 2], dtype = np.int64)   
print("\nForcing a Datatype: ")
print(x.dtype)

输出:

Integer Datatype: 
int64
Float Datatype: 
float64
Forcing a Datatype: 
int64

DataType 数组上的数学运算

在 Numpy 数组中,基本的数学运算是在数组上按元素执行的。这些操作既作为运算符重载应用,也作为函数应用。Numpy 中提供了许多有用的函数来对数组执行计算,例如sum:用于添加数组元素,T:用于元素的转置等。

# Python 程序创建数据类型对象
import numpy as np
# 第一个数组
arr1 = np.array([[4, 7], [2, 6]], 
                 dtype = np.float64)
# 第二个数组
arr2 = np.array([[3, 6], [2, 8]], 
                 dtype = np.float64) 
# 两个数组的加法
Sum = np.add(arr1, arr2)
print("Addition of Two Arrays: ")
print(Sum)
# 使用预定义的 sum 方法添加所有 Array 元素
Sum1 = np.sum(arr1)
print("\nAddition of Array elements: ")
print(Sum1)
# 数组的平方根
Sqrt = np.sqrt(arr1)
print("\nSquare root of Array1 elements: ")
print(Sqrt)
# 使用内置函数“T”对数组进行转置
Trans_arr = arr1.T
print("\nTranspose of Array: ")
print(Trans_arr)

输出:

Addition of Two Arrays: 
[[ 7. 13.]
 [ 4. 14.]]
Addition of Array elements: 
19.0
Square root of Array1 elements: 
[[2.         2.64575131]
 [1.41421356 2.44948974]]
Transpose of Array: 
[[4. 2.]
 [7. 6.]]


目录
相关文章
|
3天前
|
机器学习/深度学习 自然语言处理 PyTorch
使用Python实现循环神经网络(RNN)的博客教程
使用Python实现循环神经网络(RNN)的博客教程
31 1
|
1天前
|
Python
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
Python基础教程: math库常用函数(1),Python这些高端技术只有你还不知道
|
3天前
|
存储 数据挖掘 数据处理
使用Python将数据表中的浮点数据转换为整数:详细教程与案例分析
使用Python将数据表中的浮点数据转换为整数:详细教程与案例分析
7 2
|
3天前
|
SQL 数据采集 数据挖掘
构建高效的Python数据处理流水线:使用Pandas和NumPy优化数据分析任务
在数据科学和分析领域,Python一直是最受欢迎的编程语言之一。本文将介绍如何通过使用Pandas和NumPy库构建高效的数据处理流水线,从而加速数据分析任务的执行。我们将讨论如何优化数据加载、清洗、转换和分析的过程,以及如何利用这些库中的强大功能来提高代码的性能和可维护性。
|
3天前
|
存储 测试技术 程序员
【Python】—— NumPy基础及取值操作
【Python】—— NumPy基础及取值操作
8 1
|
3天前
|
索引 Python
【Python】—— Numpy 初体验
【Python】—— Numpy 初体验
4 0
|
3天前
|
机器学习/深度学习 数据挖掘 PyTorch
使用Python实现长短时记忆网络(LSTM)的博客教程
使用Python实现长短时记忆网络(LSTM)的博客教程
6 0
|
3天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
Python深度学习基于Tensorflow(1)Numpy基础
Python深度学习基于Tensorflow(1)Numpy基础
24 5
|
3天前
|
人工智能 IDE 开发工具
python环境安装教程
python环境安装教程
27 0
|
3天前
|
数据采集 iOS开发 MacOS
Python及Pycharm安装教程
Python及Pycharm安装教程
28 0