Numpy数组间运算

一、场景

数据:

[[80,86],
[82,80],
[85,78],
[90,90],
[86,82],
[82,90],
[78,80],
[92,94]]

二、数组与数的运算

arr = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr + 1
arr / 2

# 可以对比python列表的运算,看出区别
a = [1,2,3,4,5]
a * 3

三、数组与数组的运算

arr1 = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])

上面这个能进行运算吗,结果是不行的!

四、广播机制

执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise的运算,而不是矩阵乘法的运算,矩阵乘法运算时需要维度之间严格匹配。Broadcast机制的功能是为了方便不同形状的array(numpy库的核心数据结构)进行数学运算

当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组

例如:

Image (3d array):  256 x 256 x 3
Scale (1d array):              3
Result (3d array): 256 x 256 x 3

A      (4d array):  9 x 1 x 7 x 1
B      (3d array):      8 x 1 x 5
Result (4d array):  9 x 8 x 7 x 5

A      (2d array):  5 x 4
B      (1d array):      1
Result (2d array):  5 x 4

A      (2d array):  15 x 3 x 5
B      (1d array):  15 x 1 x 1
Result (2d array):  15 x 3 x 5

如果是下面这样,则不匹配:

A  (1d array): 10
B  (1d array): 12
A  (2d array):      2 x 1
B  (3d array):  8 x 4 x 3

这样就可以运算了:

arr1 = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr2 = np.array([[1], [3]])

五、矩阵运算

现在再次回到上面的学生问题?

Numpy数组间运算

如何能够达到我们想要的效果,直接得出每个学生的成绩!!!!这是机器学习最常见的问题之一,如何进行数据运算

5.1、什么是矩阵

矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。

a = np.array([[80,86],
[82,80],
[85,78],
[90,90],
[86,82],
[82,90],
[78,80],
[92,94]])
b = np.array([[0.7],[0.3]])

np.mat(a)

5.2、矩阵乘法运算

必须符合上面的式子,否则运算出错.

在进行矩阵运算的时候,可以直接使用一个乘法运算API

a = np.array([[80,86],
[82,80],
[85,78],
[90,90],
[86,82],
[82,90],
[78,80],
[92,94]])
b = np.array([[0.7],[0.3]])

np.matmul(a, b)

5.3、矩阵应用场景

大部分机器学习算法需要用到

Numpy数组间运算

展开阅读全文

页面更新:2024-03-13

标签:数组   多维   式子   维度   乘法   数据结构   英文   矩阵   场景   区别   机制   机器   两个   数据   数码   学生

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top