Python—Numpy库的用法

Python016

Python—Numpy库的用法,第1张

NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。

[('age', 'i1')]

[10 20 30]

[('abc', 21, 50.0), ('xyz', 18, 75.0)]

每个内建类型都有一个唯一定义它的字符代码:

[[1, 2] [3, 4] [5, 6]]

[[[ 0, 1, 2] [ 3, 4, 5] [ 6, 7, 8] [ 9, 10, 11]] [[12, 13, 14] [15, 16, 17] [18, 19, 20] [21, 22, 23]]]

[1 2 3]

[1 2 3]

[(1, 2, 3) (4, 5)]

原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]

修改后的数组是: 0 5 10 15 20 25 30 35 40 45 50 55

原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]

原始数组的转置是: [[ 0 20 40] [ 5 25 45] [10 30 50] [15 35 55]]

修改后的数组是: 0 5 10 15 20 25 30 35 40 45 50 55

C风格是横着顺序

F风格是竖着的顺序

原始数组是: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]

修改后的数组是: [[ 0 10 20 30] [ 40 50 60 70] [ 80 90 100 110]]

第一个数组: [[ 0 5 10 15] [20 25 30 35] [40 45 50 55]]

第二个数组: [1 2 3 4]

修改后的数组是: 0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4

原始数组: [[0 1 2 3] [4 5 6 7]]

调用 flat 函数之后: 5

原数组: [[0 1 2 3] [4 5 6 7]]

展开的数组:默认是A [0 1 2 3 4 5 6 7]

以 F 风格顺序展开的数组: [0 4 1 5 2 6 3 7]

原数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

转置数组: [[ 0 4 8] [ 1 5 9] [ 2 6 10] [ 3 7 11]]

不放回取样:

从列表ori中不放回地取n个数

通过这种操作,我们可以获得一个二维列表的子集:

(如果这个二维列表是图的邻接矩阵,那么就是对图进行随机采样,获得一个图的子图)

首先要注意,"+" 操作对于list和numpy.array是完全不同的

python 中的list,"+"代表拼接:

在numpy.array中,"+"代表矩阵相加

keepdim指的是维度不变,常在sum中使用。如:

会发现,keepdim之后还是二维的

这里要注意,pytorch和numpy里max()函数的返回值是不同的

pytorch:

也就是说,max(1)代表求第一维的最大值,对于二维数组来说,就是求纵向的最大值,然后,第一个返回值是最大值所形成数组,第二个返回值是最大值所在的索引。这一个技巧在机器学习的分类任务中很常用,比如我们的分类任务是把数据分成m类,那么最终我们模型的输出是m维的,对于n个样本就是n*m,如果要判断我们的模型最终的分类结果,就是找n个样本里,每个样本m维输出的最大值索引,代表样本是这个类的可能性最大。我们可以方便地用这种方式找到最大值地索引:

其中test_out是模型输出,predict_y则是分类结果

另外一点要注意的是,numpy与pytorch不同,numpy的max()只有一个返回值:

也就是说,numpy.max()不会返回最大值所在的索引