“广播机制:通过扩展实现数组运算”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“ == Numpy数组的广播机制 == *注意numpy里数组之间的运算和线性代数中的矩阵运算是不一样的 *同纬度和形状的数组之间就是同位…”)
 
110讨论 | 贡献
第5行: 第5行:
 
-------------------------------
 
-------------------------------
 
import numpy as np
 
import numpy as np
x = np.array([[1,2,1],[4,5,6]])
+
<br>x = np.array([[1,2,1],[4,5,6]])
y = np.array([[1,2,1],[3,4,5]])
+
<br>y = np.array([[1,2,1],[3,4,5]])
print(x+y)
+
<br>print(x+y)
# [[ 2  4  2]
+
<br>[[ 2  4  2]
[ 7  9 11]]
+
<br>[ 7  9 11]]
 
print(x-y)
 
print(x-y)
 
# [[0 0 0]
 
# [[0 0 0]

2020年5月16日 (六) 11:08的版本

Numpy数组的广播机制

  • 注意numpy里数组之间的运算和线性代数中的矩阵运算是不一样的
  • 同纬度和形状的数组之间就是同位置的元素两两匹配运算的结果

import numpy as np
x = np.array([[1,2,1],[4,5,6]])
y = np.array([[1,2,1],[3,4,5]])
print(x+y)
[[ 2 4 2]
[ 7 9 11]] print(x-y)

  1. [[0 0 0]
  2. [1 1 1]]

print(x*y)

  1. [[ 1 4 1]
  2. [12 20 30]]

注意:如果是列和行其中之一有空缺是可以通过复制来运算的。 但是蓝本不能有缺或者多,即行和列都不完整。

矩阵数组的创建


import numpy as np

a = np.arange(3,10)#默认从3开始到10(不包括10),步长为1 print(a)

  1. >>>[3 4 5 6 7 8 9]

a_ones = np.ones((3,4))#创建3*4的全1矩阵 print(a_ones )

  1. [[1. 1. 1. 1.]
  2. [1. 1. 1. 1.]
  3. [1. 1. 1. 1.]]

a_zeros = np.zeros((3,4))#创建3*4的全0矩阵 print(a_zeros )

  1. [[0. 0. 0. 0.]
  2. [0. 0. 0. 0.]
  3. [0. 0. 0. 0.]]

a_eye = np.eye(3)#创建3阶单位矩阵

  1. print(a_eye)
  2. [[1. 0. 0.]
  3. [0. 1. 0.]
  4. [0. 0. 1.]]

矩阵数组的点乘 —— dot


import numpy as np

a = np.array([[1,2,3],[7,6,2]]) b = np.array([[1,2],[7,6],[8,2]]) print(a.dot(b))

  1. [[39 20]
  2. [65 54]]

print(a[0,:].dot(b))#第一行的所有列*b


行列式的叉乘 —— linalg.det


import numpy as np

a = np.array([[2,3],[6,2]]) print(np.linalg.det(a))

  1. >>>-14.000000000000004