目录
一.NumPy介绍
二.创建数组
1.一维数组创建
2.二维数组创建
3.zeros函数
4.ones函数
5.empty函数
6.arange函数
三.NumPy的数学操作
1.基本运算
2.矩阵运算
3.ndarray类的方法
四.数组堆叠
五.数组分隔
在这里对NumPy的介绍我不想扯太多,只要知道NumPy是python中法一个科学计算的基础包,它是一个python库,主要实现多维数组的操作。
调用NumPy数组的类是ndarray,也称为array。这里我们着重学习一下ndarray以下几个属性:
例如:
import numpy as np
numbers = np.arange(20).reshape(4, 5)
print(numbers.shape) # 数组维度
print(numbers.ndim) # 数组维度的个数
print(numbers.dtype.name)
print(numbers.size) # 数组元素总数
print(numbers.itemsize) # 数组的每个数组元素的字节大小
'''
(4, 5)
2
int64
20
8
'''
import numpy as np
number = np.array([1, 2,3, 4, 5, 6, 7, 8]) # 注意参数是列表
print(number)
'''
[1 2 3 4 5 6 7 8]
'''
import numpy as np
number = np.array([(1, 2, 3, 4, 5, 6, 7, 8),( 9, 8, 7, 6, 5, 4, 3, 2)])
print(number)
'''
[[1 2 3 4 5 6 7 8]
[9 8 7 6 5 4 3 2]]
'''
多维数组就是在二维的基础上加
zeros函数可以创建元素全为0的数组
import numpy as np
number = np.zeros((4,5))
print(number)
'''
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
'''
ones函数跟上面的zeros函数一样,ones函数创建元素全为1的数组
import numpy as np
number = np.ones((4,5))
print(number)
'''
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
'''
创建一个随机元素的数组
import numpy as np
number = np.empty((4,5))
print(number)
'''
[[0. 0. 0.3 1. 0. ]
[0. 1. 1. 1. 1. ]
[1. 1. 1. 0. 0. ]
[1. 0.5 0. 0. 1. ]]
'''
arange函数和range函数类似,都是在规定范围内生成数
import numpy as np
number = np.arange(1, 20, 2)
number1 =np.arange(20).reshape(4,5)
print(number)
print(number1)
'''
[ 1 3 5 7 9 11 13 15 17 19]
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
'''
数组也支持基本的数学操作
import numpy as np
a = np.array([1, 9, 4, 7, 2])
b = np.array([3, 5, 2, 8, 3])
c = a + b
f = a - b
d = b * 5
e = a ** 2
print('a:{}\nb:{}\n加法:{}\n减法:{}\nb乘5:{}\na的平方:{}'.format(a, b, c, f, d, e))
'''
a:[1 9 4 7 2]
b:[3 5 2 8 3]
加法:[ 4 14 6 15 5]
减法:[-2 4 2 -1 -1]
b乘5:[15 25 10 40 15]
a的平方:[ 1 81 16 49 4]
'''
数组的乘法运算用*号,矩阵乘法可以用@或dot函数
import numpy as np
a = np.array([1, 9, 4, 7, 2])
b = np.array([3, 5, 2, 8, 3])
print('乘法:{}\n矩阵乘法:{}或{}'.format(a*b,a@b,a.dot(b)))
'''
乘法:[ 3 45 8 56 6]
矩阵乘法:118或118
'''
ndarray类的几个方法,sum方法求元素和,min求元素最小值,max求元素最大值
import numpy as np
a = np.array([1, 9, 4, 7, 2])
print('sum:{}\nmax:{}\nmin:{}'.format(a.sum(),a.max(),a.min()))
'''
sum:23
max:9
min:1
'''
数组的堆叠就是多个数组合成一个数组,其中,vstack()垂直堆叠,hstack()水平堆叠,column_stack将第一个数组按列堆叠到第二个数组中
import numpy as np
a = np.array([1, 9, 4, 7, 2])
b = np.array([3, 4, 2, 6, 8])
print('vstack:\n{}\nhstack:\n{}\ncolumn_stack:\n{}'.format(np.vstack((a, b)), np.hstack((a, b)), np.column_stack((a, b))))
'''
vstack:
[[1 9 4 7 2]
[3 4 2 6 8]]
hstack:
[1 9 4 7 2 3 4 2 6 8]
column_stack:
[[1 3]
[9 4]
[4 2]
[7 6]
[2 8]]
'''
hspalit()按列拆分(水平),vspalit()按行拆分(垂直),array_split()按要求拆分数组个数
hsplit(ary,indice_or_section) # 后一个参数表示拆分的轴
vsplit(ary,indice_or_section)
aray_split(ary,indices_or_section,axis=0) # axis表示拆分子数组的个数
import numpy as np
a = np.arange(20)
b = np.arange(20).reshape(4, 5)
c = np.arange(20).reshape(4, 5)
print('按第二列拆分:{}'.format(np.hsplit(a, 2)))
print('按第二行拆分:{}'.format(np.vsplit(b, 2)))
print('拆分为2个子数组:{}'.format(np.array_split(c, 2)))
'''
按第二列拆分:[array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])]
按第二行拆分:[array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])]
拆分为2个子数组:[array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])]
'''