Python np.array的使用详解
1. 引言
在Python中,NumPy(Numerical Python)是一个用于科学计算的强大库。它提供了高性能的多维数组对象(ndarray)以及用于处理这些数组的各种函数。本文将详细介绍NumPy的核心对象之一——np.array
的使用方法和相关特性。
2. 创建np.array
在使用NumPy的np.array
之前,我们首先需要导入NumPy库。通常情况下,大家都使用习惯了将NumPy库导入并重命名为np
:
import numpy as np
2.1 从列表或元组创建np.array
使用NumPy的array
函数,可以从一个列表或元组创建一个np.array
对象。例如,我们可以从一个一维的Python列表创建一个一维的np.array
:
list_data = [1, 2, 3, 4, 5]
array_data = np.array(list_data)
print(array_data)
这段代码将输出:
[1 2 3 4 5]
类似地,我们可以从一个多维的Python列表创建一个多维的np.array
:
matrix = [[1, 2], [3, 4], [5, 6]]
array_matrix = np.array(matrix)
print(array_matrix)
这段代码将输出:
[[1 2]
[3 4]
[5 6]]
使用np.array
函数创建的数组可以是任意维度的,只需要在array
函数中提供对应的数据即可。
2.2 使用NumPy提供的函数创建特殊的np.array
除了通过列表或元组创建np.array
,NumPy还提供了一些函数用于创建特殊的数组。
2.2.1 使用np.zeros
创建全零数组
np.zeros
函数可以创建一个指定形状的全零数组。我们可以指定数组的形状(维度)作为参数。例如,创建一个形状为(2, 3)的全零数组:
zeros_array = np.zeros((2, 3))
print(zeros_array)
这段代码将输出:
[[0. 0. 0.]
[0. 0. 0.]]
2.2.2 使用np.ones
创建全一数组
np.ones
函数类似于np.zeros
函数,可以创建一个指定形状的全一数组。
ones_array = np.ones((2, 3))
print(ones_array)
这段代码将输出:
[[1. 1. 1.]
[1. 1. 1.]]
2.2.3 使用np.arange
创建连续整数数组
np.arange
函数可以创建一个连续的整数数组。我们可以指定数组的起始值、结束值和步长。例如,创建一个从0到9的连续整数数组:
integer_array = np.arange(10)
print(integer_array)
这段代码将输出:
[0 1 2 3 4 5 6 7 8 9]
2.2.4 使用np.linspace
创建等差数列数组
np.linspace
函数会在指定的起始值和结束值之间创建等差数列。我们可以指定数列的起始值、结束值以及包含的元素个数。
linspace_array = np.linspace(0, 1, 5)
print(linspace_array)
这段代码将输出:
[0. 0.25 0.5 0.75 1. ]
2.3 使用随机数创建np.array
除了上述方法,NumPy还提供了多种方法用于创建由随机数填充的np.array
。
2.3.1 使用np.random.rand
创建0到1之间的随机数数组
np.random.rand
函数可以创建指定维度的0到1之间的随机数数组。我们可以指定数组的形状(维度)。
random_array = np.random.rand(2, 3)
print(random_array)
这段代码将输出:
[[0.4205492 0.35339967 0.15871663]
[0.2809823 0.29531438 0.68120656]]
2.3.2 使用np.random.randn
创建服从标准正态分布的随机数数组
np.random.randn
函数可以创建符合标准正态分布(均值为0,方差为1)的指定维度的随机数数组。
randn_array = np.random.randn(2, 3)
print(randn_array)
这段代码将输出:
[[ 1.01111932 -0.23198528 0.09575871]
[ 0.72938318 0.60414215 -0.29782545]]
3. np.array
的属性与方法
3.1 shape
属性
使用shape
属性可以获取np.array
的形状(维度)。
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array.shape)
这段代码将输出:
(2, 4)
3.2 ndim
属性
使用ndim
属性可以获取np.array
的维度。
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array.ndim)
这段代码将输出:
2
3.3 size
属性
使用size
属性可以获取np.array
中元素的总个数。
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array.size)
这段代码将输出:
8
3.4 dtype
属性
使用dtype
属性可以获取np.array
中元素的数据类型。
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array.dtype)
这段代码将输出:
int64
3.5 reshape
方法
使用reshape
方法可以改变np.array
的形状(维度)。
array = np.arange(10)
reshaped_array = array.reshape((2, 5))
print(reshaped_array)
这段代码将输出:
[[0 1 2 3 4]
[5 6 7 8 9]]
3.6 flatten
方法
使用flatten
方法可以将np.array
展开为一维数组。
array = np.array([[1, 2, 3], [4, 5, 6]])
flattened_array = array.flatten()
print(flattened_array)
这段代码将输出:
[1 2 3 4 5 6]