前言
一、Numpy是什么?
Numpy(Numerical Python)是一个开源的Python科学计算库,它提供了一个强大的N维数组对象ndarray
和用于操作这些数组的工具。
Numpy的核心功能包括:
1.Numpy提供了向量化操作,可以在单个操作中处理整个数组,而不是逐个元素处理,大大提高了计算效率,便捷的运算与多功能的函数
2.广播机制,可以对形状不同的数组进行相互操作
3.内存优化,Numpy的数组在内存中是连续存储的,这使得对数组的访问和操作非常高效。
4.多库兼容,许多其他重要的数据科学和机器学习库都依赖于它
二、关于numpy
先导入NumPy
在使用 NumPy
之前,需要先导入库,通常我们会将 NumPy
以 np
作为别名:
import numpy as np
1.数组的维度概念array
一维数组: 一维数组只有行
二维数组:二维数组既有行也有列
多维数组:
创建三维数组
np.array([[[1,2],[3,4]],
[[5,6],[7,8]],
[[9,10],[11,12]]])
注意:但是维度并不是意味着他有多少行或者是多少列,而是只你可以从几个方向上去看它
2.创建数组
a)使用 array()
创建数组
# 从Python列表创建数组
arr = np.array([1, 2, 3, 4])
arr = np.array(range(10))
print(arr)
# 创建多维数组
arr_2d = np.array([[1, 2], [3, 4]])
print(arr_2d)
b) 使用 arange()
和 linspace()
创建序列数组
np.arange(开始值,结束值,step步长)
不同参数个数情况介绍:
- 一个参数时,参数值为终点值,起点取默认值0,步长取默认值1。
- 两个参数时,第一个参数为起点值,第二个参数为终点,步长取默认值1。
- 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长,其中步长支持小数。
# 创建一个等差序列数组
arr_range = np.arange(0, 10, 2)
print(arr_range) # 输出:[0 2 4 6 8]
# 创建一个线性间隔数组
arr_linspace = np.linspace(0, 1, 5)
print(arr_linspace) # 输出:[0. 0.25 0.5 0.75 1. ]
c) 使用 zeros()
、ones()
和 full()
创建特定值数组
ones用法:
np.ones(shape,dtype=None,order='C')
参数说明:
shape:整数或者整型元组定义返回数组的形状;可以是一个数(创建一维向量),也可以是一个元组(创建多维向量)
eg: (3) 这就是一维。 (3,4)这就是3行4列的二维数组
dtype : 数据类型,可选定义返回数组的类型。eg: np.int64
order(内存布局): 这是一个较不常用的可选参数,用于指定数组在内存中的存储顺序。它可以是 'C'(行优先,即 C 风格)或 'F'(列优先,即 Fortran 风格)。
# 创建一个全为0的数组
zeros_arr = np.zeros((2, 3))
print(zeros_arr) # 输出:[[0. 0. 0.] [0. 0. 0.]]
# 创建一个全为1的数组
ones_arr = np.ones((2, 3))
print(ones_arr) # 输出:[[1. 1. 1.] [1. 1. 1.]]
# 创建一个指定数值的数组
full_arr = np.full((2, 2), 5)
print(full_arr) # 输出:[[5 5] [5 5]]
d)ones_like创建形状相同的数组
np.ones_like(a,dtype=float, order="c", subok=True)
a:参考对象即为参考数组
subok: 这是一个可选参数,默认为 False。一般用于带有掩码的数据
e)full创建指定值的数组
np.full(shape,fill_value,dtype=None,order='C')
fill_value:标量(就是纯数值变量)
f)full_like方法用于创建一个与给定数组形状(shape)和数据类型(dtype)相同的新数组。并用指定的填充值(fill_value)填充这个新数组。
np.full_like(a,fill_value=123,dtype=None)
3. 数组属性
np.array对象具有多种属性,可以获取数组的信息:
ndim:查看数组轴的个数
shape:查看数组的形状
dtype:描述数组中元素的数据类型
size:查看数组元素的个数
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 数组的形状 (2, 3)
print(arr.size) # 数组中的元素数量 6
print(arr.ndim) # 数组的维度 2
print(arr.dtype) # 数组元素的数据类型 int64
数组的形状操作
a) reshape()
改变数组形状
方法用于改变数组的形状(shape),而不改变其数据。这意味着你可以将数组重新排列成不同的维度,只要新形状的总元素数量与原始数组的总元素数量相同。一转多或者多转一。
两行三列数组转为三行两列数组:
arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape((3, 2))
print(reshaped_arr)
b)flatten展开数组
不需要知道有多少个数,程序会自动帮我们计算转换,按顺序展开,只能讲多维数组展开成一维数组
arr. flatten()
c) 数组转置
对上一步得到的二维数组进行转置。转置操作会交换数组的行和列,即原数组的第i行第j列元素会变成转置后数组的第j行第i列元素。
arr.T
arr.transpose()
swapaxes(1,0)
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
arr.transpose()
swapaxes(1,0)