【Python数据分析系列3】Numpy学习——数组的基本数学计算(加、减、乘、除)

目录

  • 数组的加、减、乘、除运算
    • 1. 数组的加法
    • 2. 数组的减法
    • 3. 数组的乘法
    • 4. 数组的除法

数组的加、减、乘、除运算

今天我们来一起学习关于数组的一些基本数学计算中,对于数值型元素的数组,可以参与各种数学计算,这是Numpy数组功能的强大。今天学习的是数组的的加、减、乘、除法,Let‘s go!顺便巩固上篇博客关于数组的建立和数组方法

1. 数组的加法

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

2. 数组的减法

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]]

3. 数组的乘法

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]]

4. 数组的除法

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编程从数据分析到机器学习实践》##

你可能感兴趣的:(Python数据分析,python,numpy,数据分析)