一、Numpy是什么?
NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
二、使用步骤
1.引入库
代码如下(示例):
import numpy as np
2.创建数组
要创建 NumPy 数组,可以使用函数 np.array()
import numpy as np
a = np.array([1,2,3])
从已有数组创建数组
x = [1,2,3]
a = np.asarray(x)
#[1 2 3]
创建包含一系列均匀间隔的数组。将指定第一个数字、最后一个数字和步长。
np.arange(2,9,2)
#[2 4 6 8]
3.排序元素
排序元素可以使用函数np.sort()
numpy.sort(a, axis=-1, kind=None, order=None)
arr = np.array([2,1,4,3,7,5,6,89])
np.sort(arr)
#[1 2 3 4 5 6 7 8 9]
排序元素还可用到其他函数:
argsort,它是沿指定轴的间接排序,
lexsort,它是对多个键的间接稳定排序,
searchsorted,它将在排序数组中查找元素,以及分区,这是一种部分排序。
连接多个个数组可以用到np.concatenate()函数
numpy.concatenate((a1, a2, …), axis=0, out=None, dtype=None,casting=“same_kind”
a = np.array([1,2,3])
b = np.array([4,5,6])
np.concatenate((a, b))
#[1 2 3 4 5 6])
或者将数组连接起来
m = np.array([[1,2], [3,4]])
n = np.array([[5,6]])
np.concatenate((m,n), axis=0)
#array([[1, 2],
# [3, 4],
# [5, 6]])
4.切片与索引
ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中列表的切片操作一样。下标从0-n。
切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。
a = np.arange(10)
s = slice(2,7,2) #从索引2开始到索引7停止,间隔为2
print (a[s])
#[2 4 6]
也可通过冒号切割进行切片
a = np.arange(10)
b = a[2:7:2] #从索引2开始到索引7停止,间隔为2
print(b)
#[2 4 6]
以下获取(0,0)(1,1)处的元素
x = np.array([[1,2],[3,4]])
y = x[[0,1], [0,1]]
#[1 4]
5.数组形状
ndarray.ndim 将显示数组的轴数或尺寸。
a = np.arange(24)
a.ndim
#1
ndarray.size 将显示数组的元素总数。这是数组形状元素的乘积。
a = np.array([[1,2,3],[4,5,6]])
a.side
#6
ndarray.shape将显示一个整数元组,指示沿数组的每个维度存储的元素数。例如,如果您有一个包含 2 行和 3 列的二维数组,则数组的形状为 。(2, 3)
a = np.array([[1,2,3],[4,5,6]])
a.shape
#(2,3)
6.广播
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
a = np.array([1,2,3,4])
b = np.array([1,2,3,4])
c = a*b
#[1 4 9 16]
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。
a = np.array([[ 0, 0, 0],
[1,1,1],
[2,2,2],
[3,3,3]])
b = np.array([0,1,2])
print(a+b)
#[[0 1 2]
# [1 2 3]
# [2 3 4]
# [3 4 5]]
7.基本阵列操作
加法
data = np.array([1,2])
ones = np.ones(2,dtype=int)
data + ones
#[2 3]
减法
data = np.array([1,2])
ones = np.ones(2,dtype=int)
data - ones
#[0 1]
乘法
data = np.array([1,2])
ones = np.ones(2,dtype=int)
data * data
#[0 2]
除法
data = np.array([1,2])
ones = np.ones(2,dtype=int)
data / data
#[1. 1.]
求和sum函数
对行轴求和
b = np.array([[1, 1], [2, 2]])
b.sum(axis=0)
#[3 3]
对列轴求和
b.sum(axis=1)
#[2 4]
NumPy是Python的数值计算扩展,提供高效处理大型矩阵的能力。使用包括引入库、创建数组、排序元素、切片索引、数组形状、广播及基本阵列操作等步骤。例如,创建数组用np.array(),排序用np.sort(),广播允许不同形状的数组计算,而加减乘除和sum函数则支持基本的数学运算。
532





