【python】numpy数组按下标获取值的一个小问题

numpy数组按下标获取值

在为数据生成标签时,写了一个很简单的代码,但是一直有问题,困扰了我很久,很久以后才解决并且想明白,特此记下这个问题,以免日后在犯。
原始代码如下:

import numpy as np
num = 5 #数据分类的数目
per = 200 #每类数据的条数
lable = np.zeros((num*per,num))
    for i in range(0,num):
        lable[i*per:(i+1)*per-1,i] = 1 

使用这个代码,会使得每类的最后一个数据,没有打上标签。比如lable[199,0]应该是1,但是结果却是0。
每次都必须后面一个个补全。
后面过了很久,用到了range这个函数。

a = np.range(1,5)
print(a)
输出结果是[1,2,3,4]。

输出没有5 ,没有5。
突然都明白了。
lable[0:199,:] 并不包含lable[199,:]。
将原代码做了修改,就一切都好了。

import numpy as np
num = 5 #数据分类的数目
per = 200 #每类数据的条数
lable = np.zeros((num*per,num))
    for i in range(0,num):
        #lable[i*per:(i+1)*per-1,i] = 1 
        lable[i*per:(i+1)*per,i] = 1 

你可能感兴趣的:(python)