文章目录
np.fromfunction( ):
np.fromfunction(function, shape, **kwargs ):
通过对坐标轴上的坐标(0, 1, 2, 3……),执行 function 函数来计算出大小为 shape 的 array. 注: *args是可变的positional arguments列表,**kwargs是可变的keyword arguments列表
np.mean() 与 np.average():
np.mean(): 计算算数平均值
np.average(a, axis=None, weights=None, returned=False): 计算加权平均值,其中 returned 参数: Default is False. If True, the tuple (average, sum_of_weights) is returned.
np.diag():
np.diag(): 用于设置对角线附近的值
np.intersect1d():
np.intersect1d(ar1, ar2, assume_unique=False): 1d:输出的是一维 array.
提取数组的整数部分
使用5种不同的方法提取一个随机数组的整数部分:
Z = np.random.uniform(0,10,10)
print("原始值: ", Z)
print ("方法 1: ", Z - Z%1)
print ("方法 2: ", np.floor(Z))
print ("方法 3: ", np.ceil(Z)-1)
print ("方法 4: ", Z.astype(int))
print ("方法 5: ", np.trunc(Z))
将二维数组按照第三列从上到下进行升序排列:
Z = np.random.randint(0,10,(5,5))
print("排序前:\n",Z)
Z[Z[:,2].argsort()]
总结:argsort(), argmin(), argmax() 找出所求值的索引,但对于二维或多维数组来说就是在操作一行或者一列了,对于二维可以用 amax()
将二维数组的前两行进行顺序交换:
A = np.arange(25).reshape(5,5)
print(A)
A[[0,1]] = A[[1,0]]
print(A)
计算两个数组之间的欧式距离:
a = np.array([1, 2])
b = np.array([7, 8])
#数学计算方法,即公式硬怼
print(np.sqrt(np.power((8-2), 2) + np.power((7-1), 2)))
#NumPy 计算
np.linalg.norm(b-a)
求逆矩阵并验证:
matrix = np.array([[1., 2.], [3., 4.]])
inverse_matrix = np.linalg.inv(matrix)
验证原矩阵和逆矩阵的点积是否为单位矩阵
assert np.allclose(np.dot(matrix, inverse_matrix), np.eye(2))
numpy.linalg
numpy.linalg: linalg = linear + algebra
np.linalg.inv():矩阵求逆
np.linalg.det():矩阵求行列式(标量)
np.linalg.norm(x, ord=None, axis=None, keepdims=False): ord: 默认为求第二范数,可以为1(|x1|+|x2|+…+|xn|), 2, np.inf(max(|xi|))
np.squeeze():
Remove single-dimensional entries from the shape of an array.
x = np.array([[[0], [1], [2]]])
x = np.squeeze(x, axis=(0, 2))
print(x)
#输出结果:[0 1 2]
resize()和reshape()的区别
如a.reshape((2,3)) 不会真的改变a的形状,但resize会
np.tile()和np.repeat()的区别:
a=np.array([10,20])
a.repeat([3,2]) # len([3,2]) == a.ndim(a的维度)
#结果:[10,10,10,20,20]
a.repeat([3,2],axis=1)
#结果:array([[10, 10, 10, 20, 20],
# [30, 30, 30, 40, 40]])
所以tile和repeat的区别就是tile是整个的重复,而repeat通过axis参数可以只对行或者列进行重复,但需要注意的是len(repeats)==a.shape[axis]
np matrix和array的区别:
numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). matrix是array的一个小的分支,包含于array. 所以matrix 拥有array的所有特性。
在numpy中matrix的主要优势是:相对简单的乘法运算符号。例如,a和b是两个matrices,那么a*b,就是矩阵积。而不用np.dot().
#建立matrix:
a=np.mat('4 3; 2 1')
np.multiply(a, b) 和 a*b 的区别:
np.multiply() 对array, mat都是element-wise
*对array是对应位置相乘,对mat是进行矩阵乘法运算
to be continued…