1.一维数组中寻找与某个数最近的数
# 一维数组中寻找与某个数最近的数 Z=np.random.uniform(0,1,20) print("随机数组:\n",Z) z=0.5 m=Z.flat[np.abs(Z-z).argmin()] m
随机数组: [0.87249114 0.64595395 0.10142435 0.46202885 0.15948433 0.53886897 0.17802543 0.0885369 0.9859855 0.92086206 0.94694556 0.98142637 0.98578709 0.58045542 0.96260882 0.42125302 0.06691017 0.60032047 0.51668912 0.44761173]
Out[35]:
0.5166891167930422
2. 找出给定一维数组中非 0 元素的位置索引
Z = np.nonzero([1,0,2,0,1,0,4,0])
Z
(array([0, 2, 4, 6]),)
3.对于给定的 5x5 二维数组,在其内部随机放置 p 个值为 1 的数
p=3 Z=np.zeros((5,5)) z=np.copy(Z) choice=np.random.choice(range(5*5), p, replace=False) print(choice) np.put(Z,choice,1) print(Z) np.put(z,np.random.choice(range(3*3),p,replace=False),1) Z
[12 24 8] [[0. 0. 0. 0. 0.] [0. 0. 0. 1. 0.] [0. 0. 1. 0. 0.] [0. 0. 0. 0. 0.] [0. 0. 0. 0. 1.]]
Out[103]:
array([[0., 0., 0., 0., 0.], [0., 0., 0., 1., 0.], [0., 0., 1., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 1.]])
4.对于随机的 3x3 二维数组,减去数组每一行的平均值
X=np.random.rand(3,3) print(X) print(X.mean(axis=1,keepdims=True)) print(X.mean(axis=1,keepdims=False)) Y=X-X.mean(axis=1,keepdims=True) Y
[[0.85617766 0.21482728 0.44325087] [0.44365337 0.47689328 0.34798518] [0.96849106 0.99755228 0.05166133]] [[0.50475194] [0.42284395] [0.67256822]] [0.50475194 0.42284395 0.67256822]
Out[106]:
array([[ 0.35142572, -0.28992466, -0.06150107], [ 0.02080943, 0.05404934, -0.07485876], [ 0.29592283, 0.32498406, -0.62090689]])
5 获得二维数组点积结果的对角线数组
A=np.random.uniform(0,1,(3,3)) B=np.random.uniform(0,1,(3,3)) print(np.dot(A,B))
[[0.69147934 0.2526067 0.54456377] [1.88744045 1.39425446 1.01802782] [0.80716853 0.21709932 0.68321853]]
/慢方法
np.diag(np.dot(A,B))
[0.69147934 1.39425446 0.68321853]
/快方法
np.sum(A*B.T,axis=1)
[0.69147934 1.39425446 0.68321853]