np.sum和sum区别、np.tile()、np.clip()、np.outer()、np.dot()和np.multiply()和np.matmul()和 * 的区别

一、np.sum()和sum的区别
如果只用sum()的话,表示的是数组中对应维度上的数相加,得到的是比原始数组少一维的数组。
如果写 np.sum() 的话,表示一个数组中的维数和列数上的所有数都加在一起,得到的是一个数值。

二、np.tile()
b = tile(a,(m,n)): 即是把a数组里面的元素复制n次放进一个数组c中,然后再把数组c复制m次放进一个数组b中,通俗地讲就是将a在行方向上复制m次,在列方向上复制n次。
也就是生成一个元素为a,m行n列的数组。

三、np.clip()
b = clip(a, a_min, a_max, out=None)
将数组a中的所有数限定到范围a_min和a_max中,即a中所有比a_min小的数都会强制变为a_min,a中所有比a_max大的数都会强制变为a_max.
其中,a_min和a_max即可以是一个数值,也可以是和a相同形状的一个数组,这个时候是对应元素进行比较。

Examples
    --------
    >>> a = np.arange(10)
    >>> np.clip(a, 1, 8)
    array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])
    >>> a
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> np.clip(a, 3, 6, out=a)
    array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
    >>> a = np.arange(10)
    >>> a
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    >>> np.clip(a, [3, 4, 1, 1, 1, 4, 4, 4, 4, 4], 8)
    array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])

参考链接:clip()函数

四、np.outer()
对于多维向量,全部展开变为一维向量
第一个参数表示倍数,使得第二个向量每次变为几倍。
第一个参数确定结果的行,第二个参数确定结果的列
示例:

import numpy as np
x1 = [1,2,3]
x2 = [4,5,6]
outer = np.outer(x1,x2)
print outer

x1 = [[1,2],[3,4]]
x2 = [[1,1],[1,1]]
outer = np.outer(x1,x2)
print outer

结果显示:
[[ 4  5  6]       #1倍
 [ 8 10 12]       #2倍
 [12 15 18]]      #3倍

[[1 1 1 1]        #1倍
 [2 2 2 2]        #2倍
 [3 3 3 3]        #3倍
 [4 4 4 4]]       #4倍


五、np.dot(),np.multiply(),np.matmul(),* 的区别

1、对于矩阵(matrix)而言
np.multiply() 是对应元素相乘,
而 * 、np.matmul() 函数 与 np.dot()函数 相当于矩阵乘法(矢量积),对应的列数和行数必须满足乘法规则;
如果希望以数量积的方式进行,则必须使用 np.multiply() 函数.

2、对于数组(Array)而言,
np.multiply 和 * 均表示的是数量积(即对应元素的乘积),
np.matmul()与np.dot()表示的是矢量积(即矩阵乘法),一维时计算内积。

综上可知,
在想计算点乘时,使用函数np.multiply(),
在想计算矩阵乘法时使用函数np.dot(),
通常不会引起错误。
参考链接:各种乘法区别~~

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页