0.1.112_增加函数
This commit is contained in:
parent
e638f2ba24
commit
ae88acf40d
@ -1,7 +1,7 @@
|
||||
[metadata]
|
||||
# replace with your username:
|
||||
name = guan
|
||||
version = 0.1.111
|
||||
version = 0.1.112
|
||||
author = guanjihuan
|
||||
author_email = guanjihuan@163.com
|
||||
description = An open source python package
|
||||
|
@ -1,6 +1,6 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: guan
|
||||
Version: 0.1.111
|
||||
Version: 0.1.112
|
||||
Summary: An open source python package
|
||||
Home-page: https://py.guanjihuan.com
|
||||
Author: guanjihuan
|
||||
|
@ -123,6 +123,62 @@ def run_programs_sequentially(program_files=['./a.py', './b.py'], execute='pytho
|
||||
end = time.time()
|
||||
print('Total running time = '+str((end-start)/60)+' min')
|
||||
|
||||
# 将XYZ数据转成矩阵数据(说明:x_array/y_array的输入和输出不一样。要求z_array数据中y对应的数据为小循环,x对应的数据为大循环)
|
||||
def convert_xyz_data_into_matrix_data(x_array, y_array, z_array):
|
||||
import numpy as np
|
||||
x_array_input = np.array(x_array)
|
||||
y_array_input = np.array(y_array)
|
||||
x_array = np.array(list(set(x_array_input)))
|
||||
y_array = np.array(list(set(y_array_input)))
|
||||
z_array = np.array(z_array)
|
||||
len_x = len(x_array)
|
||||
len_y = len(y_array)
|
||||
matrix = np.zeros((len_x, len_y))
|
||||
for ix in range(len_x):
|
||||
for iy in range(len_y):
|
||||
matrix[ix, iy] = z_array[ix*len_y+iy]
|
||||
return x_array, y_array, matrix
|
||||
|
||||
# 将矩阵数据转成XYZ数据(说明:x_array/y_array的输入和输出不一样。生成的z_array数据中y对应的数据为小循环,x对应的数据为大循环)
|
||||
def convert_matrix_data_into_xyz_data(x_array, y_array, matrix):
|
||||
import numpy as np
|
||||
x_array_input = np.array(x_array)
|
||||
y_array_input = np.array(y_array)
|
||||
matrix = np.array(matrix)
|
||||
len_x = len(x_array_input)
|
||||
len_y = len(y_array_input)
|
||||
x_array = np.zeros((len_x*len_y))
|
||||
y_array = np.zeros((len_x*len_y))
|
||||
z_array = np.zeros((len_x*len_y))
|
||||
for ix in range(len_x):
|
||||
for iy in range(len_y):
|
||||
x_array[ix*len_y+iy] = x_array_input[ix]
|
||||
y_array[ix*len_y+iy] = y_array_input[iy]
|
||||
z_array[ix*len_y+iy] = matrix[ix, iy]
|
||||
return x_array, y_array, z_array
|
||||
|
||||
# 通过定义计算R^2(基于实际值和预测值)
|
||||
def calculate_R2_with_definition(y_true_array, y_pred_array):
|
||||
import numpy as np
|
||||
y_mean = np.mean(y_true_array)
|
||||
SS_tot = np.sum((y_true_array - y_mean) ** 2)
|
||||
SS_res = np.sum((y_true_array - y_pred_array) ** 2)
|
||||
R2 = 1 - (SS_res / SS_tot)
|
||||
return R2
|
||||
|
||||
# 通过sklearn计算R^2,和定义的计算结果一致
|
||||
def calculate_R2_with_sklearn(y_true_array, y_pred_array):
|
||||
from sklearn.metrics import r2_score
|
||||
R2 = r2_score(y_true_array, y_pred_array)
|
||||
return R2
|
||||
|
||||
# 通过scipy计算线性回归后的R^2(基于线性回归模型)
|
||||
def calculate_R2_after_linear_regression_with_scipy(y_true_array, y_pred_array):
|
||||
from scipy import stats
|
||||
slope, intercept, r_value, p_value, std_err = stats.linregress(y_true_array, y_pred_array)
|
||||
R2 = r_value**2
|
||||
return R2
|
||||
|
||||
# 获取函数或类的源码(返回字符串)
|
||||
def get_source(name):
|
||||
import inspect
|
||||
|
@ -102,7 +102,7 @@ def read_text_files_in_directory(directory='./', file_format='.md'):
|
||||
file_list.append(root+'/'+files[i0])
|
||||
content_array = []
|
||||
for file in file_list:
|
||||
with open(file, 'r') as f:
|
||||
with open(file, 'r', encoding='UTF-8') as f:
|
||||
content_array.append(f.read())
|
||||
return file_list, content_array
|
||||
|
||||
@ -118,9 +118,9 @@ def find_words_in_multiple_files(words, directory='./', file_format='.md'):
|
||||
return file_list_with_words
|
||||
|
||||
# 复制一份文件
|
||||
def copy_file(file1='./a.txt', file2='./b.txt'):
|
||||
def copy_file(old_file='./a.txt', new_file='./b.txt'):
|
||||
import shutil
|
||||
shutil.copy(file1, file2)
|
||||
shutil.copy(old_file, new_file)
|
||||
|
||||
# 打开文件,替代某字符串
|
||||
def open_file_and_replace_str(file_path='./a.txt', old_str='', new_str=''):
|
||||
@ -134,7 +134,7 @@ def open_file_and_replace_str(file_path='./a.txt', old_str='', new_str=''):
|
||||
# 复制一份文件,然后再替代某字符串
|
||||
def copy_file_and_replace_str(old_file='./a.txt', new_file='./b.txt', old_str='', new_str=''):
|
||||
import guan
|
||||
guan.copy_file(file1=old_file, file2=new_file)
|
||||
guan.copy_file(old_file=old_file, new_file=new_file)
|
||||
content = guan.read_text_file(file_path=new_file)
|
||||
content = content.replace(old_str, new_str)
|
||||
f = guan.open_file(filename=new_file, file_format='', mode='overwrite')
|
||||
@ -202,6 +202,24 @@ def read_one_dimensional_complex_data(filename='a', file_format='.txt'):
|
||||
y_array = np.append(y_array, [y_row], axis=0)
|
||||
return x_array, y_array
|
||||
|
||||
# 读取文件中的XYZ数据(一行一组x, y, z)
|
||||
def read_xyz_data(filename='a', file_format='.txt'):
|
||||
import numpy as np
|
||||
f = open(filename+file_format, 'r')
|
||||
text = f.read()
|
||||
f.close()
|
||||
row_list = np.array(text.split('\n'))
|
||||
x_array = np.array([])
|
||||
y_array = np.array([])
|
||||
z_array = np.array([])
|
||||
for row in row_list:
|
||||
column = np.array(row.split())
|
||||
if column.shape[0] != 0:
|
||||
x_array = np.append(x_array, [float(column[0])], axis=0)
|
||||
y_array = np.append(y_array, [float(column[1])], axis=0)
|
||||
z_array = np.append(z_array, [float(column[2])], axis=0)
|
||||
return x_array, y_array, z_array
|
||||
|
||||
# 读取文件中的二维数据(第一行和第一列分别为横纵坐标)
|
||||
def read_two_dimensional_data(filename='a', file_format='.txt'):
|
||||
import numpy as np
|
||||
@ -260,7 +278,7 @@ def read_two_dimensional_complex_data(filename='a', file_format='.txt'):
|
||||
matrix = np.append(matrix, [matrix_row], axis=0)
|
||||
return x_array, y_array, matrix
|
||||
|
||||
# 读取文件中的二维数据(不包括x和y)
|
||||
# 读取文件中的二维数据(不包括横纵坐标)
|
||||
def read_two_dimensional_data_without_xy_array(filename='a', file_format='.txt'):
|
||||
import numpy as np
|
||||
matrix = np.loadtxt(filename+file_format)
|
||||
@ -288,6 +306,25 @@ def write_one_dimensional_data_without_opening_file(x_array, y_array, f):
|
||||
f.write('\n')
|
||||
i0 += 1
|
||||
|
||||
# 在文件中写入XYZ数据(一行一组x, y, z)
|
||||
def write_one_dimensional_data(x_array, y_array, z_array, filename='a', file_format='.txt'):
|
||||
import guan
|
||||
with open(filename+file_format, 'w', encoding='UTF-8') as f:
|
||||
write_xyz_data_without_opening_file(x_array, y_array, z_array, f)
|
||||
|
||||
# 在文件中写入XYZ数据(一行一组x, y, z)(需要输入已打开的文件)
|
||||
def write_xyz_data_without_opening_file(x_array, y_array, z_array, f):
|
||||
import numpy as np
|
||||
x_array = np.array(x_array)
|
||||
y_array = np.array(y_array)
|
||||
z_array = np.array(z_array)
|
||||
i0 = 0
|
||||
for x0 in x_array:
|
||||
f.write(str(x0)+' ')
|
||||
f.write(str(y_array[i0])+' ')
|
||||
f.write(str(z_array[i0])+'\n')
|
||||
i0 += 1
|
||||
|
||||
# 在文件中写入二维数据(第一行和第一列分别为横纵坐标)
|
||||
def write_two_dimensional_data(x_array, y_array, matrix, filename='a', file_format='.txt'):
|
||||
import guan
|
||||
@ -314,13 +351,13 @@ def write_two_dimensional_data_without_opening_file(x_array, y_array, matrix, f)
|
||||
f.write('\n')
|
||||
i0 += 1
|
||||
|
||||
# 在文件中写入二维数据(不包括x和y)
|
||||
# 在文件中写入二维数据(不包括横纵坐标)
|
||||
def write_two_dimensional_data_without_xy_array(matrix, filename='a', file_format='.txt'):
|
||||
import guan
|
||||
with open(filename+file_format, 'w', encoding='UTF-8') as f:
|
||||
guan.write_two_dimensional_data_without_xy_array_and_without_opening_file(matrix, f)
|
||||
|
||||
# 在文件中写入二维数据(不包括x和y)(需要输入已打开的文件)
|
||||
# 在文件中写入二维数据(不包括横纵坐标)(需要输入已打开的文件)
|
||||
def write_two_dimensional_data_without_xy_array_and_without_opening_file(matrix, f):
|
||||
for row in matrix:
|
||||
for element in row:
|
||||
|
Loading…
x
Reference in New Issue
Block a user