NumPy ndarray

NumPy ndarray

参考:numpy ndarray

NumPy是Python编程语言的一个库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的核心功能之一是ndarray对象,这是一个多维数组对象,提供了数组级别的数学运算和复杂广播能力。

1. 创建ndarray

NumPy提供了多种方式来创建数组,最简单的方式是使用np.array()函数,直接通过列表来创建数组。

示例代码1:使用np.array()创建数组

import numpy as np

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

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

Output:

NumPy ndarray

示例代码2:使用np.zeros()创建全零数组

import numpy as np

# 创建一个3x4的全零二维数组
zero_array = np.zeros((3, 4))
print(zero_array)

Output:

NumPy ndarray

示例代码3:使用np.ones()创建全一数组

import numpy as np

# 创建一个2x3的全一二维数组
ones_array = np.ones((2, 3))
print(ones_array)

Output:

NumPy ndarray

示例代码4:使用np.arange()创建数组

import numpy as np

# 创建一个从0到10,步长为2的一维数组
range_array = np.arange(0, 10, 2)
print(range_array)

Output:

NumPy ndarray

示例代码5:使用np.linspace()创建等间隔数组

import numpy as np

# 创建一个从0到1,总共5个元素的等间隔一维数组
linspace_array = np.linspace(0, 1, 5)
print(linspace_array)

Output:

NumPy ndarray

2. 数组的形状和重塑

数组的形状是一个非常重要的属性,因为它定义了数组的维度和每个维度的大小。NumPy提供了多种方式来查看和修改数组的形状。

示例代码6:查看数组形状

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])
print(array.shape)

Output:

NumPy ndarray

示例代码7:重塑数组

import numpy as np

array = np.arange(6)
reshaped_array = array.reshape((2, 3))
print(reshaped_array)

Output:

NumPy ndarray

示例代码8:扁平化数组

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])
flattened_array = array.flatten()
print(flattened_array)

Output:

NumPy ndarray

3. 数组的索引和切片

数组的索引和切片是访问数组元素的重要方式。NumPy提供了多种索引方式,包括基本的索引、切片以及布尔索引等。

示例代码9:基本索引

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])
print(array[0, 1])

Output:

NumPy ndarray

示例代码10:切片索引

import numpy as np

array = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
slice_array = array[1:3, 1:3]
print(slice_array)

Output:

NumPy ndarray

示例代码11:布尔索引

import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])
bool_index = array > 3
filtered_array = array[bool_index]
print(filtered_array)

Output:

NumPy ndarray

4. 数组的数学运算

NumPy支持数组级别的数学运算,这些运算可以直接应用于数组对象上。这包括基本的算术运算、统计运算、线性代数运算等。

示例代码12:数组加法

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
sum_array = np.add(array1, array2)
print(sum_array)

Output:

NumPy ndarray

示例代码13:数组乘法

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
product_array = np.multiply(array1, array2)
print(product_array)

Output:

NumPy ndarray

示例代码14:数组的点积

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
dot_product = np.dot(array1, array2)
print(dot_product)

Output:

NumPy ndarray

示例代码15:数组的转置

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])
transposed_array = np.transpose(array)
print(transposed_array)

Output:

NumPy ndarray

示例代码16:数组的逆

import numpy as np

array = np.array([[1, 2], [3, 4]])
inverse_array = np.linalg.inv(array)
print(inverse_array)

Output:

NumPy ndarray

5. 广播

广播是NumPy中一个强大的机制,它允许numpy在执行算术运算时使用不同形状的数组。当操作两个数组时,numpy会逐个维度比较它们的形状,遵循一定的广播规则。

示例代码17:广播加法

import numpy as np

array1 = np.array([[1, 2, 3]])
array2 = np.array([[1], [2], [3]])
broadcasted_sum = np.add(array1, array2)
print(broadcasted_sum)

Output:

NumPy ndarray

示例代码18:广播乘法

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([[1], [2], [3]])
broadcasted_product = np.multiply(array1, array2)
print(broadcasted_product)

Output:

NumPy ndarray

6. 高级功能

NumPy还提供了一些高级功能,如掩码数组、结构化数组等,这些功能使得NumPy在处理复杂数据时更加强大。

示例代码19:使用掩码数组

import numpy as np

array = np.array([1, 2, 3, 4, 5])
mask = np.array([True, False, True, False, True])
masked_array = np.ma.array(array, mask=mask)
print(masked_array)

Output:

NumPy ndarray

示例代码20:创建结构化数组

import numpy as np

dtype = [('name', 'S10'), ('age', 'i4'), ('height', 'f4')]
values = [('Alice', 24, 5.5), ('Bob', 30, 5.9), ('Cathy', 22, 5.2)]
structured_array = np.array(values, dtype=dtype)
print(structured_array)

Output:

NumPy ndarray

以上就是关于NumPy的ndarray对象的详细介绍,包括创建数组、数组操作、索引、切片、数学运算、广播以及一些高级功能。通过这些基础和高级的操作,我们可以对数组进行灵活的处理,满足各种数据处理和科学计算的需求。

7. 数组的排序

NumPy提供了多种排序算法,包括快速排序、归并排序、堆排序等。我们可以通过np.sort()函数来对数组进行排序。

示例代码21:数组排序

import numpy as np

array = np.array([3, 1, 2, 5, 4])
sorted_array = np.sort(array)
print(sorted_array)

Output:

NumPy ndarray

8. 数组的连接和分割

NumPy提供了多种方式来连接和分割数组,包括np.concatenate()np.split()等函数。

示例代码22:数组连接

import numpy as np

array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
concatenated_array = np.concatenate((array1, array2))
print(concatenated_array)

Output:

NumPy ndarray

示例代码23:数组分割

import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])
split_arrays = np.split(array, 2)
print(split_arrays)

Output:

NumPy ndarray

9. 数组的迭代

NumPy提供了多种方式来迭代数组,包括基本的for循环迭代,以及np.nditer()函数提供的高级迭代方式。

示例代码24:基本迭代

import numpy as np

array = np.array([1, 2, 3, 4, 5])
for element in array:
    print(element)

Output:

NumPy ndarray

示例代码25:高级迭代

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6]])
for element in np.nditer(array):
    print(element)

Output:

NumPy ndarray

10. 数组的文件输入输出

NumPy提供了多种方式来保存和加载数组,包括np.save()np.load()等函数。

示例代码26:保存数组到文件

import numpy as np

array = np.array([1, 2, 3, 4, 5])
np.save('numpyarray.com.npy', array)

示例代码27:从文件加载数组

import numpy as np

array = np.load('numpyarray.com.npy')
print(array)

Output:

NumPy ndarray

以上就是关于NumPy的ndarray对象的详细介绍,通过这些基础和高级的操作,我们可以对数组进行灵活的处理,满足各种数据处理和科学计算的需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程