Numpy是一个Python语言下的矩阵运算的包,因为机器学习中会涉及一些非常复杂的矩阵运算,使用基本的pyhon中的数据结构操作起来很麻烦,于是就诞生了很多矩阵运算的专用包,Numpy是其中使用最多的一个,举个例子,opencv的python版本中就是用了Numpy矩阵来表示图片:
我们来看一下打印结果:
本文目的是介绍Numpy最常见的一些用法,我会尝试使用最简短的代码解释清楚Numpy的用法,下面的每一段代码都可以独立运行。
1 Numpy创建数组
1.1 创建一个一维数组
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
数组中的元素必须是同一个类型,如果是不同的类型,会发生自动的类型转换,如下:
import numpy as np
arr = np.array(["char", True, 3, 4, 5])
print(arr)
打印的结果如下:
显然所有的元素都被转换成了字符串类型。
1.2 创建多维数组
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
1.3 创建指定长度的数组
第一种方式是未初始化的数组,数组元素的值是随机的,下面的代码创建了一个6行2列的int类型的数组
import numpy as np
arr = np.empty([6,2], dtype = int)
第二种方式是已经初始化的数组,比如全0的数组或者全1的数组
import numpy as np
arr = np.zeros([4, 2])
2 Numpy中数组的读写
2.1 修改数组中的元素
import numpy as np
arr = np.zeros([4, 2])
arr[0][1] = 1
2.2 读取数组中的元素
import numpy as np
arr = np.zeros([4, 2])
arr[0][1] = 1
print(arr[0][1])
2.3 尾部添加元素
import numpy as np
arr = np.zeros([6])
np.append(arr, 7)
print(arr)
arr = np.append(arr, 7)
print(arr)
这段代码的输出如下:
需要注意的两点是:
append方法的调用者是numpy本身
append不改变参数中的数组,需要将结果返回给原来的数组
3 数组整体操作
3.1 两个数组相加
import numpy as np
arr1 = np.array([1.5,2.5,3.5])
arr2 = np.array([2.5,3.5,4.5])
arr = arr1 + arr2
print(arr)
输出如下:
3.2 数组和常数相加
import numpy as np
arr1 = np.array([1.5,2.5,3.5])
arr = arr1 + 0.5
print(arr)
输出如下:
其它的如乘法、除法、乘方的原理相同,都是对数组里面的每一个元素单独做对应的操作
4 取出数组的指定行或者指定的列
4.1 取出一维数组中的奇数号元素
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
index = range(0, 9, 2)
arrSig = arr[index]
print(arrSig)
4.2 取出二维数组中前三行
import numpy as np
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print(arr[0:2, :])
输出如下:
4.2 取出二维数组中前两列
import numpy as np
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print(arr[:, 0:2])
输出如下:
4.3 取出二维数组中的前两行,再从这前两行中取出前两列
import numpy as np
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print(arr[0:2, 0:2])
输出如下:
先写这么多,有空再添加