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.]]
- 点赞
- 收藏
- 关注作者
评论(0)