glob.glob() 函数

获取文件目录下符合条件的所有文件: 

dataset_path = glob.glob('data/*.npy')

例:获取 'data' 目录下的所有 '.npy' 文件

# generate_data()  
dataset_path = glob.glob('data/*.npy') 
input_data = np.load(file = dataset_path[3])     
print(len(dataset_path))      
print(input_data)

dataset_path 默认将所有 '.npy' 文件按照 '*' 的字典序排序,并可以用下标的方式来访问第 $i$ 个元素。 

len(dataset_path) 就是文件个数   

 

CSV 文件的读写 

CSV 文件以逗号隔开  

直接将矩阵转为 CSV 文件:

datas = []  
for i in range(20):  
    datas.append(('data/' + str(i) + '.npy', i % 2))    
    
frame = pd.DataFrame(datas)       
frame.to_csv("annotations.csv", index=False)

可以定义每一列的列名 

data_path = []  
data_tag = [] 
for i in range(20):  
    data_path.append('data/' + str(i) + '.npy')   
    data_tag.append(i % 2)        

frame = pd.DataFrame({'data_path':data_path, 'data_tag': data_tag})          
frame.to_csv("annotations.csv", index=False, sep = ',')

一行一行地写入 csv 数据 (删除多余空格)

后面代码为读入 csv 文件并输出每一行 

with open('annotations', 'w', newline='') as f:    
    writer = csv.writer(f)               
    for i in range(20): 
        file_path = 'data/' + str(i) + '.npy'   
        row = [file_path, i % 2]   
        writer.writerow(row)  

with open('annotations') as f:  
    f_csv = csv.reader(f)  
    for row in f_csv:      
        print(row)

  

os.path.join()

路径拼接函数。

os.path.join('aaaa','/bbbb','ccccc.txt')

从后向前数如果出现 '/' 则前面的部分则不会显示

输出结果:

python生成矩陣_CSV

 

%s

与 c++ 中 printf("%s", x) 用法类似,都是用 %s 代指后面的变量。 

output = '233123'   
print('%sA' % output)

输出结果:

python生成矩陣_随机数_02

 

Pandas 

在处理数据时,很多时候数据是以 .csv 的形式存储的,这就要求学会用 Pandas 库来处理这些数据。

csv 形式中,两个数据是通过逗号隔开的。  

pandas.read_csv

括号里面放 csv 文件的路径,就可以读取 csv 文件了。 

该函数读取的数据类型为 Dataframe , 有许多可选的参数 

1. header: 

正常读取 csv 文件的话默认第一行是列名,而很多时候是没有列名的,即第一行就是数据。

此时可以令 header=None,即第一行开始就是数据。 

2. names 

names 会直接加到 csv 文件的第一行,即列名。

如果已经有列名的话先前的列名会被算作元素放到数据的第一行。 

pandas.DataFrame

可以直接把不包含列名的 csv 矩阵扔里面,然后会自动生成数据部分的 csv 文件。 

如果想要定义列名的话就用 pandas.columns = [] 来定义。 

pandas.get_dummies() 

对于每一列元素,若全是数值则按照数值存储。

对于每一列元素,若全是名字则按照 one-hot 表示。

 

随机数

python 自带的 random 类

random.randint(n,m) #生成一个n到m之间的随机数
random.random()  #生成一个0到1之间的浮点数
random.uniform(n,m) #生成一个n到m之间的浮点数
random.choice([])  #从列表之间随机选取一个数

numpy 生成随机数

np.random.rand()#产生N维的均匀分布的随机数
np.random.randn()#产生n维的正态分布的随机数
np.random.randint(n,m,k)#产生n--m之间的k个整数
np.random.random()#产生n个0--1之间的随机数