NumPy 数组使用大全

  • Post category:Python

NumPy数组使用大全

NumPy是Python中用于科学计算的重要库,它提供了高效的多维数组对象和各种数学函数。本文将介绍NumPy数组的使用大全,包括数组的创建、索引、切片、操作和计算等方面。

数组的创建

NumPy数组可以通过多种方式创建,包括从Python列表、元组、文件和其他数组中创建。以下是一些常见的数组创建方法:

从Python列表或元组中创建数组

import numpy as np

# 从Python列表中创建一维数组
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print(my_array)

# 从Python元组中创建二维数组
my_tuple = ((1, 2, 3), (4, 5, 6))
my_array = np.array(my_tuple)
print(my_array)

从文件中创建数组

import numpy as np

# 从文本文件中创建数组
my = np.loadtxt("data.txt")
print(my_array)

# 从二进制文件中创建数组
my_array = np.fromfile("data.bin", dtype=np.float32)
print(my_array)

其他数组创建方法

import numpy as np

# 创建全0数组
my_array = np.zeros((3, 3))
print(my_array)

# 创建全1数组
my_array = np.ones((3, 3))
print(my_array)

# 创建随机数组
my_array = np.random.rand(3, 3)
print(my_array)

数组的索引和切片

NumPy数组可以使用索引和切片来访问和修改数组中的元素。以下是一些常见的索引和切片方法:

索引

import numpy as np

# 一维数组索引
my_array = np.array([1, 2, 3, 4, 5])
print(my_array[0])

# 二维数组索引
my_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(my_array[0, 0])

切片

import numpy as np

# 一维数组切片
my_array = np.array([1, 2, 3, 4, 5])
print(my_array[1:4])

# 二维数组切片
my_array =.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(my_array[:2, 1:])

数组的操作

NumPy数组支持各种操作,包括数组的转置、重塑、拼接和分裂等。以下是一些常见的数组操作方法:

转置“`python

import numpy as np

二维数组转置

my_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(my_array.T)


### 重塑

```python
import numpy as np

# 重塑数组
my_array = np.array([1, 2, 3, 4, 5, 6])
print(my_array.reshape((2, 3)))

拼接

import numpy as np

# 拼接数组
my_array1 = np.array([[1, 2], [3, 4]])
my_array2 = np.array([[5, 6], [7, 8]])
print(np.concatenate((my_array1, my_array2), axis=1))

分裂

import numpy as np

# 分裂数组
my_array = np.array([1, 2, 3, 4, 5, 6])
print(np.split(my_array, 3))

数组的计算

NumPy数组支持各种数学计算,包括加、减、乘、除、求和、平均值、方差和标准差等。以下是一些常见的数组计算方法:

加、减、乘、除

import numpy as np

# 数组加法
my_array1 = np.array([1, 2, 3])
my_array2 = np.array([4, 5, 6])
print(my_array1 + my_array2)

# 数组减法
print(my_array1 - my_array2)

# 数组乘法
print(my_array1 * my_array2)

# 数组除法
print(my_array1 / my_array2)

求和、平均值、方差和标准差

import numpy as np

# 数组求和
my_array = np.array([1, 2, 3, 4, 5])
print(np.sum(my_array))

# 数组平均值
print(np.mean(my_array))

# 数组方差
print(np.var(my_array))

# 数组标准差
print(np.std(my_array))

示例说明

示例1:使用NumPy数组进行线性回归

import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据
x = np.random.rand(100)
y = 2 * x + 1 + np.random.randn(100) * 0.1

# 构建模型
X = np.vstack([x, np.ones(len(x))]).T
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)

# 绘制图形
plt.scatter(x, y)
plt.plot(x, w[0] * x + w[1], color="red")
plt.show()

在上面的示例代码中,我们首先生成了100个随机数据点,并使用NumPy数组构建了一个线性回归模型。然后,我们使用Matplotlib库绘制了数据点和回归线的图形。

示例2:使用NumPy数组进行图像处理

import numpy as npimport matplotlib.pyplot as plt
from PIL import Image

# 读取图像
image = Image.open("image.jpg")
image_array = np.array(image)

# 转换为灰度图像
gray_array = np.mean(image_array, axis=2)

# 绘制图像
plt.imshow(gray_array, cmap="gray")
plt.show()

在上面的示例代码中,我们首先使用Pillow库读取了一张图像,并使用NumPy数组将其转换为灰度图像。然后,我们使用Matplotlib库绘制了灰度图像的图形。