numpy可以说是Python运用于人工智能和科学计算的一个重要基础,关于库的引入不做赘述,主要分享一些总结的numpy库的用法。
1. numpy数组对象
Numpy中的多维数组称为ndarray,这是Numpy中最常见的数组对象。ndarray对象通常包含两个部分:
- ndarray数据本身
- 描述数据的元数据
Numpy数组的优势
- Numpy数组通常是由相同种类的元素组成的,即数组中的数据项的类型一致。这样有一个好处,由于知道数组元素的类型相同,所以能快速确定存储数据所需空间的大小。
- Numpy数组能够运用向量化运算来处理整个数组,速度较快;而Python的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。
- Numpy使用了优化过的C API,运算速度较快
2 numpy数组(ndarray)的创建
2.1 array()
通过array方式创建,向array中传入一个list实现
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(array1)
print(array2)
[Runing] ============
[1 2 3]
[[1 2 3]
[4 5 6]
[7 8 9]]
2.2 arange()
通过arange创建数组:下例中创建一个0~1间隔为0.1的行向量,从0开始,不包括1,第二个例子通过对齐广播方式生成一个多维的数组。
import numpy as np
array1 = np.arange(0, 1, 0.1)
array2 = np.arange(1, 70, 10).reshape(-1, 1) + np.arange(0, 7)
array3 = np.arange(24).reshape(2,3,4)
print(array1)
print(array2)
print(arrat3)
[Running]=======
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
[[ 1 2 3 4 5 6 7]
[11 12 13 14 15 16 17]
[21 22 23 24 25 26 27]
[31 32 33 34 35 36 37]
[41 42 43 44 45 46 47]
[51 52 53 54 55 56 57]
[61 62 63 64 65 66 67]]
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
2.3 linspace()&logspace()
通过linspace函数创建数组:下例中创建一个0~1间隔为1/9的行向量(按等差数列形式生成),从0开始,包括1.
通过logspace函数创建数组:下例中创建一个1~100,有20个元素的行向量(按等比数列形式生成),其中0表示10 0=1,2表示10
2=100,从1开始,包括100
import numpy as np
array1 = np.linspace(0, 1, 10)
array2 = np.logspace(0, 2, 20)
print(array1)
print(array2)
[Running]===========
[0. 0.11111111 0.22222222 0.33333333 0.44444444 0.55555556
0.66666667 0.77777778 0.88888889 1. ]
[ 1. 1.27427499 1.62377674 2.06913808 2.6366509
3.35981829 4.2813324 5.45559478 6.95192796 8.8586679
11.28837892 14.38449888 18.32980711 23.35721469 29.76351442
37.92690191 48.32930239 61.58482111 78.47599704 100. ]
2.4 生成特殊数列
- ones、ones_like,根据形状创建一个全1的数组、后者可以复制其他数组的形状
- zeros、zeros_like,类似上面,全0
- empty、empty_like,创建新数组、只分配空间
- eye、identity,创建对角线为1的对角矩阵
注意要指定数组的规模(用一个元组指定),同时要指定元素的类型,否则会报错。这部分函数较简单,不进行测试