赞
踩
今天我们来一起学习关于数组的一些基本数学计算中,对于数值型元素的数组,可以参与各种数学计算,这是Numpy数组功能的强大。今天学习的是数组的的加、减、乘、除法,Let‘s go!顺便巩固上篇博客关于数组的建立和数组方法
import numpy as np
one = np.ones(4).reshape(2,2)
print('数组与标量相加one + 1:', one + 1) #相当于数组的每一个元素都加上这个标量
two = np.arange(4).reshape(2,2)
print('数组与数组相加one + two:', one + two) #数组与数组相加就是对应位置相加,前提是两个矩阵满足广播原则(Broadcasting Rules)
#这里简单科普一下广播原则,在后续的学习中会生动展示,它有两点:
#原则一:两个数组其中一个(行或者列)的长度为1,则可以广播
#原则二:两个数组的后缘维度(Trailing Dimension,即从末尾开始算起的维度)的长度相符,则可以广播
print('数组与数组相加(采用np.add(one , two)方式):', np.add(one , two))
one += 4
print('数组与标量相加(采用赋值运算方法)one += 4:', one) #把4累加赋值给one数组中的每一个元素
输出:
数组与标量相加one + 1: [[2. 2.]
[2. 2.]]
数组与数组相加one + two: [[1. 2.]
[3. 4.]]
数组与数组相加(采用np.add(one , two)方式): [[1. 2.]
[3. 4.]]
数组与标量相加(采用赋值运算方法)one += 4: [[5. 5.]
另外,书上说通过赋值运算符号,会生成新的数组,我做了下面一个小实验,查看了这两次o1输出的地址,惊人地发现是一样的,说明是o1还是那个o1,我也不知道这是什么肥事,如果有读者看到了这里也可以去试一试,大家一起把原因捋一捋
o1 = np.ones(4).reshape(2,2)
print(o1, id(o1))
o1 += 4
print(o1, id(o1))
输出:
[[1. 1.]
[1. 1.]] 2285942670000
[[5. 5.]
[5. 5.]] 2285942670000
one1 = np.arange(1,10).reshape(3,3)
print('one1=',one1)
five = np.full((3,3), 5) #3*3,值都为5的数组
print('数组与数组相减one1 - five:', one1 - five) #数组对应元素相减
print('数组与数组相加(采用np.subtract(one1 , five)方式):', np.subtract(one1 , five))
print('数组与标量相减one1 - 5:', one1 - 5) #相当于数组的每一个元素都减去这个标量
one1 -= 1
print('数组与标量相减(采用赋值运算方法)one1 -= 1:', one1)
输出: one1= [[1 2 3] [4 5 6] [7 8 9]] 数组与数组相减one1 - five: [[-4 -3 -2] [-1 0 1] [ 2 3 4]] 数组与数组相加(采用np.subtract(one1 , five)方式): [[-4 -3 -2] [-1 0 1] [ 2 3 4]] 数组与标量相减one1 - 5: [[-4 -3 -2] [-1 0 1] [ 2 3 4]] 数组与标量相减(采用赋值运算方法)one1 -= 1: [[0 1 2] [3 4 5] [6 7 8]]
one2 = np.arange(1,5).reshape(2, 2)
print('one2=', one2)
Multi = np.full((2, 2), 2) #2*2,值都为2的数组
print('Multi=', Multi)
print('数组与数组相乘one2 * Multi:', one2 * Multi) #数组相乘
print('数组与数组相乘(采用np.multiply(one2 , Multi)方式):', np.multiply(one2 , Multi))
print('数组与标量相乘one2 * 2:',one2 * 2) #相当于数组的每一个元素都去乘这个标量
one2 *= 3
print('数组与标量相乘(采用赋值运算方法)one2 *= 3:', one2)
注意,这里的数组乘法是对应元素相乘,与线性代数中矩阵乘法有区别
ne2= [[1 2] [3 4]] Multi= [[2 2] [2 2]] 数组与数组相乘one2 * Multi: [[2 4] [6 8]] 数组与数组相乘(采用np.multiply(one2 , Multi)方式): [[2 4] [6 8]] 数组与标量相乘one2 * 2: [[2 4] [6 8]] 数组与标量相乘(采用赋值运算方法)one2 *= 3: [[ 3 6] [ 9 12]]
one3 = np.full((2, 2), 8)
print('one3=', one3)
divi = np.array([[2,2],[2,2]])
print('divi=', divi)
print('数组与数组相除one3 / divi:', one3 / divi) #数组相除,对应元素相除
print('数组与数组相除(采用np.divide(one3 , divi)方式):', np.divide(one3 , divi))
print('数组与标量相除one3 / 2:',one3 / 2) #相当于数组的每一个元素都去除这个标量
#注意,数组除法中不存在one3/=2,会报错
one3= [[8 8]
[8 8]]
divi= [[2 2]
[2 2]]
数组与数组相除one3 / divi:
[[4. 4.]
[4. 4.]]
数组与数组相除(采用np.divide(one3 , divi)方式):
[[4. 4.]
[4. 4.]]
数组与标量相除one3 / 2:
[[4. 4.]
[4. 4.]]
转载请注明出处
##《Python编程从数据分析到机器学习实践》##
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。