numpy中两个多维数组之间可以进行运算的前提是:
1、shape为(4, 3, 2)可以与shape为(3, 2)的数组进行运算。(维度从后面开始算,可以成功匹配)
2、shape为(4, 3, 2)也可以与shape为(4, 3)的数组进行运算。(维度从前面开始算,可以成功匹配)
意义(好处):举个例子:每列的数据减去列的平均值的结果
demo.py(numpy,数组的运算):
# coding=utf-8
import numpy as np
t1 = np.array([[0, 1, 2], [3, 4, 5]]) # 二维数组
print(t1)
'''
[[0 1 2]
[3 4 5]]
'''
# 多维数组与单个数字 + - * /,就是数组中的所有元素依次与该数字进行+ - * /。
t2 = t1 + 5
print(t2)
'''
[[ 5 6 7]
[ 8 9 10]]
'''
# numpy中除以0并不会报错,只是警告。 0/0返回nan(不是一个数字); 1/0返回inf(正无穷),-1/0返回-inf(负无穷)
# 同形状的两个数组相 + - * /,就是两个数组中对应位置元素进行+ - * /。
t3 = np.array([[10, 11, 12], [13, 14, 15]]) # 二维数组
t4 = t1 * t3
print(t4)
'''
[[ 0 11 24]
[39 56 75]]
'''
# 多维数组与一维数组(行数组)+ - * /,就是多维数组的每一行依次与一维数组进行+ - * /。 (前提:多维数组与一维数组的列数一致)
t5 = np.array([6, 7, 8]) # 一维数组(行数组)
t6 = t1 * t5
print(t6)
'''
[[ 0 7 16]
[18 28 40]]
'''
# 多维数组与多行一列的二维数组(列数组)+ - * /,就是多维数组的每一列依次与列数组进行+ - * /。(前提:多维数组与列数组的行数一致)
t7 = np.array([[50],[60]]) # 多行一列的二维数组(列数组)
t8 = t1 * t7
print(t8)
'''
[[ 0 50 100]
[180 240 300]]
'''
demo.py(numpy,矩阵的乘法,np.dot()):
# coding=utf-8
import numpy as np
t1 = np.array([[0, 1, 2], [3, 4, 5]]) # 二维数组(2行3列)
print(t1)
'''
[[0 1 2]
[3 4 5]]
'''
t2 = np.array([[10, 11], [12, 13], [14, 15]]) # 二维数组(3行2列)
print(t2)
'''
[[10 11]
[12 13]
[14 15]]
'''
# 矩阵的乘法。 内标同可以乘,内标不同不可以乘
t3 = np.dot(t1, t2)
print(t3)
'''
[[ 40 43]
[148 160]]
'''
demo.py(sum(),数组元素求和):
# coding=utf-8
import numpy as np
t1 = np.arange(12).reshape((3,4))
print(t1)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
a = np.sum(t1) # 数组所有元素求和。 nan与数字运算还是nan
print(a) # 66
b = np.sum(t1, axis=0) # axis可以指定哪个轴上相加求和
# b = t1.sum(axis=0) # 数组本身也有sum()函数
print(b) # [12 15 18 21]
c = np.sum(t1, axis=1) # axis可以指定哪个轴上相加求和
print(c) # [6 22 38]