首先先下载numpy函数库
如果使用的pycharm软件,可在设置中下载,在Python interpreter设置里,点击+号,搜索numpy点击下载即可
第一部分
1.array()函数
这是一个将类似数组的数据转为数组的函数,我们还可以控制其数组的维度。
numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)
参数说明:
-
object: 必要参数,array_like类型。它可以是任何类似数组的对象(如列表、元组、其他数组等),或者是实现了
__array__
方法的对象,该方法会返回一个数组。 -
dtype: 可选参数,数据类型对象或字符串。用于指定创建数组时每个元素的数据类型。如果省略,则NumPy会尝试根据输入数据自动推断合适的数据类型。
-
copy: 可选布尔值参数。默认为
True
,这意味着总是创建数据的副本。如果设置为False
并且能够避免复制数据(例如,如果输入已经是NumPy数组且满足其他参数要求),则可能会共享内存。 -
order: 可选参数,字符串类型,可以是'K'(保持输入顺序,尽可能),'C'(C风格的行主序),'F'(Fortran风格的列主序)。指定数组的内存布局。
-
subok: 可选布尔值参数,默认为
False
,意味着返回的是基础NumPy类型的数组。如果设为True
,允许返回与输入具有相同类型的子类数组。 -
ndmin: 可选整数参数。指定生成数组的最小维度,如果必要的话,通过在前面添加轴来增加数组的维度。
import numpy as np# 使用列表创建一个一维数组,默认数据类型为float data_list = [1, 2, 3, 4, 5] array_1d = np.array(data_list) print(array_1d)# 创建一个二维数组并指定数据类型为int32 data_matrix = [[1, 2], [3, 4]] array_2d = np.array(data_matrix, dtype=np.int32) print(array_2d)# 不复制输入数据,而是共享内存 data_tuple = (0.1, 0.2, 0.3) array_shared = np.array(data_tuple, copy=False) # 改变原始元组中的值会影响创建的数组 data_tuple[0] = 1.0 print(array_shared)# 指定ndmin为2,即使输入是一维数据也会创建二维数组 one_dim_data = [6, 7, 8] forced_2d_array = np.array(one_dim_data, ndmin=2) print(forced_2d_array)
2.linespace()函数
该函数可以生成一段间距相同的数组,例如
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数说明:
start
:生成数组的第一个元素。stop
:生成数组的最后一个元素。num
:生成的数组中元素的个数,默认为50。endpoint
:布尔值,决定是否包含stop
值作为数组的一个元素,默认为True,即包含。retstep
:如果设置为True,则返回数组及步长。dtype
:可选的数据类型,如果不指定则根据输入数据自动推断。
上图就代表从1开始,到10结束,生成数量为10个的等差数组,他们之间的差值正好为1
3.zeros()和zeros_like()函数
在numpy函数库中,这俩函数都是用来生成全零数组的函数,但他们之间也稍有不同。
zeros()函数用于创建一个指定形状且所有元素均为零的数组,同时允许用户指定数组的数据类型。
numpy.zeros(shape, dtype=float, order='C')
参数说明:
- shape:必需参数,可以是一个整数或者一个表示数组维度的元组,用来指定新数组的形状。
- dtype:可选参数,用于指定数组元素的数据类型,默认为
numpy.float64
。 - order:可选参数,用于指定数组在内存中的存储方式,可以是
'C'
(按行优先,C语言风格)、'F'
(按列优先,Fortran风格)或'A'
(任意,取决于最有效的方式)。
比如以下示例代码,则创建一个3x4的全为零的二维数组
# 创建一个形状为 (3, 4) 的全零浮点数数组
arr = np.zeros((3, 4))
print(arr)
zeros_like()函数则可以根据现有数组创建一个新的具有相同形状和数据类型,但所有元素都是零的数组。它不需要显式地指定形状和数据类型,而是从提供的输入数组中获取这些属性。
numpy.zeros_like(array, dtype=None, order='K', subok=True)
参数说明:
- array:必需参数,是要参考其形状和数据类型的输入数组。
- dtype:可选参数,允许你指定新的数据类型覆盖原数组的数据类型,如果不指定,则新数组与输入数组具有相同的数据类型。
- order 和 subok 参数的功能类似于
numpy.zeros()
中对应的参数,不过在numpy.zeros_like()
中它们通常不是很重要,因为输出数组通常会遵循输入数组的内存布局。
import numpy as np# 假设有一个已存在的数组
existing_arr = np.array([[1, 2, 3], [4, 5, 6]])# 使用 zeros_like 创建一个与 existing_arr 形状和数据类型相同的全零数组
new_zeros_arr = np.zeros_like(existing_arr)
print(new_zeros_arr)
总结来说,当你需要根据预定义的形状创建全零数组时,使用 numpy.zeros()
;而当你希望快速创建一个与现有数组具有相同形状和类型的新零数组时,使用 numpy.zeros_like()
更为便捷。
4.random系列,生成随机数数组
NumPy库的numpy.random
模块来生成指定形状的随机数组。这里分别给出使用numpy.random
生成随机浮点数数组和整数数组的例子:
生成一个4x6的随机小数数组
arr_random = np.random.rand(4,6)
生成整数随机数数组,第一个参数0和第二个参数9代表随机数范围,取不到9,第三个参数为数组结构
arr_random_int = np.random.randint(0,9,(4,6))
5.ndim和shape
在Python的NumPy库中,ndim
和 shape
是用来描述多维数组(ndarray)的重要属性:
ndim是一个属性,代表数组的维度数量,也就是数组“有多少层”。它返回一个整数,表示数组有多少个轴(axis)。
返回值为3代表这是一个3维数组
shape同样是一个属性,但它返回的是一个表示数组各维度大小的元组。这个元组的每一个元素对应数组在相应轴上的尺寸。
这里的shape表示第一维度有2个元素(外层的两个方括号),第二维度也有2个元素(每层方括号内的两个子列表),第三维度有3个元素(每个子列表内的3个数)。比较抽象,上升到4维数组我容易猪脑过载(
arr.ndim
告诉你数组的“等级”,即它有多深或多层。arr.shape
明确给出了每一层有多少元素,从而描述了整个数组在各个维度上的具体结构。