网站后台登录域名,微信商城怎么运营,wordpress文章点赞量,临海 网站建设Numpy库
Numpy#xff08;Numerical Python的缩写#xff09;是一个开源的Python库#xff0c;用于进行科学计算。它提供了一个高性能的多维数组对象#xff08;ndarray#xff09;及用于处理这些数组的各种工具和函数。由于其高效和灵活的数据结构以及丰富的功能#x…Numpy库
NumpyNumerical Python的缩写是一个开源的Python库用于进行科学计算。它提供了一个高性能的多维数组对象ndarray及用于处理这些数组的各种工具和函数。由于其高效和灵活的数据结构以及丰富的功能Numpy已成为Python科学计算的基础库广泛应用于数据分析、机器学习、工程仿真等领域。
Numpy的主要特点包括
高性能的多维数组支持Numpy的核心是多维数组对象ndarray它提供了统一的接口来进行快速的数组计算。与Python原生的列表相比Numpy的数组在性能上有显著的优势尤其是在处理大数据时。
广泛的数学函数库Numpy提供了大量的数学函数包括线性代数运算、傅里叶变换、随机数生成等这使得进行科学计算变得非常便捷。
数组广播功能Numpy可以让不同大小的数组在一起进行数学计算时非常方便通过其广播机制小数组会在算术运算中自动扩展到与大数组相同的大小这使得数组间的运算表达更加直观。
高效的内存使用Numpy的数组使用连续内存块这不仅有利于减少内存使用还能提升计算性能。此外Numpy还提供了内存映射功能允许处理超过内存大小的数据集。
与其他语言的接口Numpy可以很容易地与C、C等语言集成这允许在性能关键的应用中使用这些语言编写核心算法同时保持Python的易用性。
Numpy是许多高级科学计算库的基础包括Pandas数据分析库、Matplotlib绘图库、Scikit-learn机器学习库等几乎成为了进行科学计算和数据分析的Python开发的必备库。
快速入门题
创建一个从1到80步长为4的一维数组A并将其变成一个4*5的二维数组输出A的转置
import numpy as np
Anp.arange(1,80,4) #Anp.arange(1,80)[::4]
AA.reshape(4,5)
print(A.T)
2. 随机生成a,b两个数组其中a.shape: (4, 1) b.shape: (3,) 计算ab,a*b,a/b
import numpy as np
anp.random.randint(1,11,(4,1))
bnp.random.randint(1,11,(3,))
print(ab)
print(a*b)
print(a/b)
3. 创建一个shape为5*3的随机矩阵A,打印出A中最大元素和最小元素,平均值并计算每一行的和
import numpy as np
Anp.random.randint(0,40,(5,3))
print(A)
print(A.max())
print(A.min())
print(A.mean())
for i in A:print(i.sum())
4. 创建两个3*3的(0,5)之间的随机数组a和b,对a,b进行水平合并后得到数组c,对c使用Min-Max 标准化算法对数据进行标准化处理并输出结果 import numpy as np
anp.random.randint(0,5,(3,3))
bnp.random.randint(0,5,(3,3))
cnp.hstack((a,b)) def minmax(a, axisNone):a_min np.min(a, axisaxis, keepdimsTrue)a_max np.max(a, axisaxis, keepdimsTrue)return (a - a_min)/(a_max - a_min)print(minmax(c))
5. 打印出以下数组要求使用np.ones创建形状为8*8的矩阵 [[1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1] [1 0 1 0 1 0 1 0] [0 1 0 1 0 1 0 1]]
import numpy as np
anp.ones((8,8),dtypenp.int8)
a[::2,1::2]0
a[1::2,::2]0
print(a)#[1::2, ::2]: 是对数组a的切片操作用于选择数组中的特定元素。
#1::2 表示从第1个索引开始注意在Python中索引是从0开始的每隔一个元素选择一次直到数组的最后一个元素。这是对数组的第一个维度通常是行的操作。
#::2 表示从第0个索引开始每隔一个元素选择一次直到该维度的最后一个元素。这是对数组的第二个维度通常是列的操作6. 使用numpy创建下列数组[1,1,2,3,4,5,6,1,1,6],找出数组中1元素的位置索引并输出索引使用两种方法。
import numpy as np
anp.array([1,1,2,3,4,5,6,1,1,6])
#way1
b[]
for i in range(len(a)):if a[i]1:b.append(i)
print(b)
#way2
print(list(np.where(a1)[0]))
7. 使用numpy创建一维数组A,对A里面的数据进行去重得到B,使用numpy创建形状与B相同的随机数组C,自定义ufunc函数计算B和C的和使用numpy.frompyfunc A为[4,4,1,2,3,4,5,7,9,1,1],数组C的数据范围在(0,5)之间
import numpy as np
Anp.array([4,4,1,2,3,4,5,7,9,1,1])
Bnp.unique(A) #进行去重
print(B.shape) #(7,)
Cnp.random.randint(0,5,(7,))
print(B)
print(C)
def add_elements(x, y):return x y
add_them np.frompyfunc(add_elements, 2, 1)
print(add_them(B,C))
8用numpy编程创建国际象棋盘填充8*8矩阵棋盘是正方形由横纵各八格颜色一深一浅交错排列的64个小正方格组成深色为黑格为0浅色为白格为1如下图所示。 并输出国际象棋盘对应的矩阵
import numpy as np
matr1np.ones((8,8))
for i in range(8):for j in range(8):if(ij)%20:matr1[i,j]0
print(国际棋盘对应的矩阵为\n,matr1)
for i in range(0,8):for j in range(0,8):if matr1[i,j]0:print(□,end )else:print(■, end )print(\n)
9. 创建一个大小3*3,(-1,1)值之间随机数组A, 对A的后两行进行交换,输出A中非0元素的值,将A中非0元素替换成0。
import numpy as np
Anp.random.uniform(-1,1,(3,3))
print(A)
A[[1,2]]A[[2,1]]
print(A)
Bnp.where(A0)
print(A[B])
for i in range(A.shape[0]):for j in range(A.shape[1]):if A[i][j]0:A[i][j]0
print(A)
10.使用Numpy数组实现生命游戏 生命游戏简称为生命是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。 给定一个包含 m × n 个格子的面板每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态 live1即为活细胞 或 dead0即为死细胞。每个细胞与其八个相邻位置水平垂直对角线的细胞都遵循以下四条生存定律
如果活细胞周围八个位置的活细胞数少于两个则该位置活细胞死亡如果活细胞周围八个位置有两个或三个活细胞则该位置活细胞仍然存活如果活细胞周围八个位置有超过三个活细胞则该位置活细胞死亡如果死细胞周围正好有三个活细胞则该位置死细胞复活
import numpy as np
def iterate(Z):#邻居N (Z[0:-2,0:-2] Z[0:-2,1:-1] Z[0:-2,2:] Z[1:-1,0:-2] Z[1:-1,2:] Z[2: ,0:-2] Z[2: ,1:-1] Z[2: ,2:])#规则birth (N3) (Z[1:-1,1:-1]0)survive ((N2) | (N3)) (Z[1:-1,1:-1]1)Z[...] 0Z[1:-1,1:-1][birth | survive] 1return Z
Z np.random.randint(0,2,(50,50))
for i in range(100): Z iterate(Z)
print(Z)