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

举报
海拥 发表于 2023/03/29 09:24:30 2023/03/29
【摘要】 Numpy是一个通用的数组处理包。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。它是使用 Python 进行科学计算的基础包。除了其明显的科学用途外,Numpy 还可以用作通用数据的高效多维容器。 Numpy 中的数组Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 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.]]
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。