高效数组处理的Numpy入门总结

NumPy是Python中一个重要的数学库,它提供了高效的数组操作和数学函数,是数据科学、机器学习、科学计算等领域的重要工具。下面是一个简单的NumPy学习教程,介绍了NumPy的基本用法和常用函数。

安装NumPy

在使用NumPy之前,需要先安装它。可以使用pip命令来安装NumPy,命令如下:

pip install numpy

导入NumPy

安装NumPy之后,可以使用import语句来导入NumPy库,命令如下:

import numpy as np

在上述代码中,我们使用import语句导入了NumPy库,并将它的别名设置为np。

创建NumPy数组

NumPy中最基本的数据结构是数组(array),可以使用NumPy库中的np.array()函数来创建数组。下面是一个创建一维数组和二维数组的例子:

import numpy as np

# 创建一维数组
a = np.array([1, 2, 3])
print(a)

# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)

输出结果为:

[1 2 3]
[[1 2 3]
 [4 5 6]]

在上述代码中,我们使用np.array()函数创建了一维数组和二维数组,并使用print语句输出了它们的值。

数组属性

NumPy数组有一些重要的属性,例如形状(shape)、维度(ndim)、元素类型(dtype)等。可以使用数组的属性来获取这些信息。下面是一个获取数组属性的例子:

import numpy as np

# 创建数组
a = np.array([[1, 2, 3], [4, 5, 6]])

# 获取数组属性
print("形状:", a.shape)
print("维度:", a.ndim)
print("元素类型:", a.dtype)

输出结果为:

形状: (2, 3)
维度: 2
元素类型: int64

在上述代码中,我们使用np.array()函数创建了一个二维数组,并使用数组的属性来获取它的形状、维度和元素类型。

数组索引和切片

可以使用索引和切片来访问NumPy数组中的元素。和Python中的列表一样,NumPy数组的索引从0开始,可以使用负数索引从数组末尾开始计数。下面是一个访问数组元素的例子:

import numpy as np

# 创建数组
a = np.array([[1, 2, 3], [4, 5, 6]])

# 访问数组元素
print(a[0, 1])
print(a[-1, -2])

# 切片访问数组元素
print(a[0, :])
print(a[:, 1])
print(a[0:2, 1:3])

输出结果为:

2
5
[1 2 3]
[2 5]
[[2 3]
 [5 6]]

在上述代码中,我们使用np.array()函数创建了一个二维数组,并使用索引和切片来访问它的元素。需要注意的是,使用冒号(:)可以访问整个行或列,例如a[:, 1]表示访问数组的第二列。

数组运算

NumPy数组支持各种数学运算,例如加减乘除、指数、对数、三角函数等。可以使用NumPy库中提供的函数来进行这些运算。下面是一个进行数组运算的例子:

import numpy as np

# 创建数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 数组运算
print("加法:", a + b)
print("减法:", a - b)
print("乘法:", a * b)
print("除法:", a / b)
print("指数:", np.exp(a))
print("对数:", np.log(a))
print("三角函数:", np.sin(a))

输出结果为:

加法: [5 7 9]
减法: [-3 -3 -3]
乘法: [ 4 10 18]
除法: [0.25 0.4  0.5 ]
指数: [ 2.71828183  7.3890561  20.08553692]
对数: [0.         0.69314718 1.09861229]
三角函数: [0.84147098 0.90929743 0.14112001]

在上述代码中,我们使用np.array()函数创建了两个一维数组,并使用NumPy库中的函数进行了各种数学运算。

广播

广播是NumPy中一种重要的机制,它允许不同形状的数组进行运算。当进行二元运算时,如果两个数组的形状不同,NumPy会自动将它们进行扩展,使它们的形状相同,然后再进行运算。下面是一个使用广播进行数组运算的例子:

import numpy as np

# 创建数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 广播运算
print("加法:", a + 1)
print("加法:", a + b.reshape(3, 1))

输出结果为:

加法: [2 3 4]
加法: [[5 6 7]
 [6 7 8]
 [7 8 9]]

在上述代码中,我们使用np.array()函数创建了两个一维数组,并使用广播机制进行了各种数学运算。需要注意的是,当进行a + 1的运算时,NumPy会自动将标量1扩展为长度为3的一维数组,然后再进行运算。当进行a + b.reshape(3, 1)的运算时,NumPy会自动将数组b的形状扩展为(3, 1),然后再进行运算。

其他常用函数

NumPy库中还有很多其他常用的函数,例如统计函数、线性代数函数、随机数函数等。下面是一个使用NumPy库中其他函数的例子:

import numpy as np

# 创建数组
a = np.array([[1, 2, 3], [4, 5, 6]])

# 统计函数
print("最大值:", np.max(a))
print("最小值:", np.min(a))
print("平均值:", np.mean(a))
print("标准差:", np.std(a))

# 线性代数函数
b = np.array([[4], [5], [6]])
print("矩阵乘法:", np.dot(a, b))

# 随机数函数
print("随机数:", np.random.rand(2, 3))

输出结果为:

最大值: 6
最小值: 1
平均值: 3.5
标准差: 1.707825127659933
矩阵乘法: [[32]
 [77]]
随机数: [[0.66256929 0.59886499 0.06279318]
 [0.44847655 0.28782597 0.83462457]]

在上述代码中,我们使用NumPy库中的统计函数、线性代数函数、随机数函数进行了各种操作。需要注意的是,np.dot()函数用于进行矩阵乘法,np.random.rand()函数用于生成指定形状的随机数数组。

一个简单示例:
高效数组处理的Numpy入门总结_第1张图片

根据二维向量D求解得到和d,可按照以下书写:

D = numpy.dot(V_numpy,F_numpy)
d = numpy.sum(D,axis=-1)#先把二维降为一维
d = numpy.sum(d,axis=-1)*0.5# 把一维降为零维

你可能感兴趣的:(算法与数据结构的碰撞经典汇总,人工智能之数据与语言,numpy)