import numpy as np X = np.arange(8) Y = X + 0.5 C = 1.0 / np.subtract.outer(X, Y) print (C) print(np.linalg.det(C))
13
(100, 2)的随机向量,求出点与点之间的距离
1 2 3 4 5
import numpy as np Z = np.random.random((100, 2)) # 生成一个100x2的随机数组 X, Y = np.atleast_2d(Z[:, 0], Z[:, 1]) # Z[:,0]表示所有行中第0列,Z[:,1]表示所有行中第一列元素 D = np.sqrt((X-X.T)**2 + (Y-Y.T)**2) print (D)
numpy.atleast_2d(*arys) 将输入视为具有至少两个维度的数组。
14
构造一个二维高斯矩阵
1 2 3 4 5 6
import numpy as np X, Y = np.meshgrid(np.linspace(-1, 1, 10), np.linspace(-1, 1, 10)) D = np.sqrt(X**2 + Y**2) sigma, mu = 1.0, 0.0 G = np.exp(-( (D-mu)**2 / (2.0*sigma**2) )) print (G)
15
给定一个向量,在第二个向量索引的每个元素上加1(注意重复索引)
1 2 3 4 5 6 7
import numpy as np Z = np.ones(10) I = np.random.randint(0,len(Z),20) Z += np.bincount(I, minlength=len(Z))#统计每个数出现的次数,数组最小长度为 len(Z) print(Z) np.add.at(Z, I, 1)#在Z中的第 i位加一 print(Z)
16
思考如何求一个四维数组最后两个轴的数据和
1 2 3 4
import numpy as np A = np.random.randint(0,10,(3,4,3,4)) #四维随机整数 sum = A.sum(axis=(-2,-1)) # axis代表第几轴,负数为倒数第i轴 print(sum)
17
通过滑动窗口计算一个数组的平均数
1 2 3 4 5 6 7
import numpy as np defmoving_average(a, n=3) : ret = np.cumsum(a, dtype=float) ret[n:] = ret[n:] - ret[:-n] return ret[n - 1:]/n Z = np.arange(20) print(moving_average(Z, n=3))
18
找出数组中出现频率最高的值
1 2 3 4
import numpy as np Z = np.random.randint(0,10,50)#生成50个0~10的随机整数 print (Z) print(np.bincount(Z).argmax())#统计数字出现频率,并返回频率最高对应的值
19
从一个10x10的矩阵中提取出连续的3x3区块
1 2 3 4 5 6 7 8
import numpy as np from numpy.lib import stride_tricks Z = np.random.randint(0,5,(10,10)) n = 3 i = 1 + (Z.shape[0]-3) j = 1 + (Z.shape[1]-3) C = stride_tricks.as_strided(Z, shape=(i, j, n, n),strides=Z.strides + Z.strides) print(C)