np中的温故知新

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]




猜你喜欢

转载自www.cnblogs.com/wqbin/p/10212829.html
今日推荐