(Python)numpy 常用操作

1 numpy

1.1 随机数

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

import random
sample_list = random.sample(ori, n)

通过这种操作,我们可以获得一个二维列表的子集:
(如果这个二维列表是图的邻接矩阵,那么就是对图进行随机采样,获得一个图的子图)

# array2d是一个二维列表
# sample_list是一个一维列表
# 可从array2d中取出sample_list为序号的行和列的交点,构成一个新的二维列表
print(array2d[sample_list , :][:, sample_list ])

1.2 numpy中数组的拼接和矩阵加减

首先要注意,"+" 操作对于list和numpy.array是完全不同的
python 中的list,"+"代表拼接:

import numpy as np
a = [
    [1, 2],
    [3, 4, 5],
    [1]
]
b = [
    [1, 2, 3],
    [],
    [1]
]
print(a+b)
# [[1, 2], [3, 4, 5], [1], [1, 2, 3], [], [1]]

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

a = [
    [1, 2],
    [3, 4,],
    [1, 2]
]
b = [
    [1, 2,],
    [30, 40],
    [10, 10]
]
a = np.array(a)
b = np.array(b)
print(a+b)
# [[ 2  4]
# [33 44]
# [11 12]]

2 pytorch

2.1 sum和max中常用的参数

2.1.1 keepdim

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

import torch
a = torch.rand(2, 3)
a1 = torch.sum(a, dim=0)
a2 = torch.sum(a, dim=0, keepdim=True)
"""----------------
a: tensor([[0.7722, 0.8250, 0.9079],
        [0.6037, 0.2440, 0.7660]])
a1: tensor([1.3759, 1.0690, 1.6739])
a2: tensor([[1.3759, 1.0690, 1.6739]])
-------------------"""

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

2.1.2 max()的返回值

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

import torch
a = torch.rand(2, 3)
b, c = a.max(1)
"""
a: tensor([[0.4581, 0.1494, 0.3477],
        [0.9751, 0.5913, 0.2611]])
b: tensor([0.4581, 0.9751])
c: tensor([0, 0])
"""

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

predict_y = test_out.max(1)[1]  # 对每一行取最大值,并求最大值所在的索引

其中test_out是模型输出,predict_y则是分类结果
另外一点要注意的是,numpy与pytorch不同,numpy的max()只有一个返回值:

import numpy as np
a = np.random.randn(2, 3)
b = a.max(1)
"""
a: [[ 0.51342459  0.53199391  0.00660358]
 [-0.01104745 -0.16093255  0.77229019]]
b: [0.53199391 0.77229019]
"""

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容