0.1.173
This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| [metadata] | [metadata] | ||||||
| # replace with your username: | # replace with your username: | ||||||
| name = guan | name = guan | ||||||
| version = 0.1.172 | version = 0.1.173 | ||||||
| author = guanjihuan | author = guanjihuan | ||||||
| author_email = guanjihuan@163.com | author_email = guanjihuan@163.com | ||||||
| description = An open source python package | description = An open source python package | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| Metadata-Version: 2.4 | Metadata-Version: 2.4 | ||||||
| Name: guan | Name: guan | ||||||
| Version: 0.1.172 | Version: 0.1.173 | ||||||
| Summary: An open source python package | Summary: An open source python package | ||||||
| Home-page: https://py.guanjihuan.com | Home-page: https://py.guanjihuan.com | ||||||
| Author: guanjihuan | Author: guanjihuan | ||||||
|   | |||||||
| @@ -27,6 +27,33 @@ def try_except(function_name, *args, **kwargs): | |||||||
|     except: |     except: | ||||||
|         pass |         pass | ||||||
|  |  | ||||||
|  | # 打印数组 | ||||||
|  | def print_array(array, line_break=0): | ||||||
|  |     if line_break == 0: | ||||||
|  |         for i0 in array: | ||||||
|  |             print(i0) | ||||||
|  |     else: | ||||||
|  |         for i0 in array: | ||||||
|  |             print(i0) | ||||||
|  |             print() | ||||||
|  |  | ||||||
|  | # 以显示编号的样式,打印数组 | ||||||
|  | def print_array_with_index(array, show_index=1, index_type=0): | ||||||
|  |     if show_index==0: | ||||||
|  |         for i0 in array: | ||||||
|  |             print(i0) | ||||||
|  |     else: | ||||||
|  |         if index_type==0: | ||||||
|  |             index = 0 | ||||||
|  |             for i0 in array: | ||||||
|  |                 print(index, i0) | ||||||
|  |                 index += 1 | ||||||
|  |         else: | ||||||
|  |             index = 0 | ||||||
|  |             for i0 in array: | ||||||
|  |                 index += 1 | ||||||
|  |                 print(index, i0) | ||||||
|  |  | ||||||
| # 获取矩阵的维度(考虑单一数值的矩阵维度为1) | # 获取矩阵的维度(考虑单一数值的矩阵维度为1) | ||||||
| def dimension_of_array(array): | def dimension_of_array(array): | ||||||
|     import numpy as np |     import numpy as np | ||||||
| @@ -37,6 +64,63 @@ def dimension_of_array(array): | |||||||
|         dim = array.shape[0] |         dim = array.shape[0] | ||||||
|     return dim |     return dim | ||||||
|  |  | ||||||
|  | # 检查矩阵是否为厄米矩阵(相对误差为1e-5) | ||||||
|  | def is_hermitian(matrix): | ||||||
|  |     import numpy as np | ||||||
|  |     if matrix.shape[0] != matrix.shape[1]: | ||||||
|  |         return False | ||||||
|  |     return np.allclose(matrix, np.conj(matrix.T)) | ||||||
|  |  | ||||||
|  | # 判断一个数是否接近于整数 | ||||||
|  | def close_to_integer(value, abs_tol=1e-3): | ||||||
|  |     import math | ||||||
|  |     result = math.isclose(value, round(value), abs_tol=abs_tol) | ||||||
|  |     return result | ||||||
|  |  | ||||||
|  | # 从列表中删除某个匹配的元素 | ||||||
|  | def remove_item_in_one_array(array, item): | ||||||
|  |     new_array = [x for x in array if x != item] | ||||||
|  |     return new_array  | ||||||
|  |  | ||||||
|  | # 根据子数组的第index个元素对子数组进行排序(index从0开始) | ||||||
|  | def sort_array_by_index_element(original_array, index): | ||||||
|  |     sorted_array = sorted(original_array, key=lambda x: x[index]) | ||||||
|  |     return sorted_array | ||||||
|  |  | ||||||
|  | # 随机获得一个整数,左闭右闭 | ||||||
|  | def get_random_number(start=0, end=1): | ||||||
|  |     import random | ||||||
|  |     rand_number = random.randint(start, end)   # 左闭右闭 [start, end] | ||||||
|  |     return rand_number | ||||||
|  |  | ||||||
|  | # 选取一个种子生成固定的随机整数,左闭右开 | ||||||
|  | def generate_random_int_number_for_a_specific_seed(seed=0, x_min=0, x_max=10): | ||||||
|  |     import numpy as np | ||||||
|  |     np.random.seed(seed) | ||||||
|  |     rand_num = np.random.randint(x_min, x_max) # 左闭右开[x_min, x_max) | ||||||
|  |     return rand_num | ||||||
|  |  | ||||||
|  | # 获取两个模式之间的字符串 | ||||||
|  | def get_string_between_two_patterns(original_string, start, end, include_start_and_end=0): | ||||||
|  |     import re | ||||||
|  |     pattern = f'{start}(.*?){end}' | ||||||
|  |     result = re.search(pattern, original_string) | ||||||
|  |     if result: | ||||||
|  |         if include_start_and_end == 0: | ||||||
|  |             return result.group(1) | ||||||
|  |         else: | ||||||
|  |             return start+result.group(1)+end | ||||||
|  |     else: | ||||||
|  |         return '' | ||||||
|  |      | ||||||
|  | # 删除某个字符串中两个模式之间的内容,返回新字符串 | ||||||
|  | def remove_substrings(original_string, start, end): | ||||||
|  |     import re | ||||||
|  |     escaped_start = re.escape(start) | ||||||
|  |     escaped_end = re.escape(end) | ||||||
|  |     pattern = f'{escaped_start}.*?{escaped_end}' | ||||||
|  |     return re.sub(pattern, '', original_string, flags=re.DOTALL) | ||||||
|  |  | ||||||
| # 获取旋转矩阵(输入为角度) | # 获取旋转矩阵(输入为角度) | ||||||
| def get_rotation_matrix(angle_deg): | def get_rotation_matrix(angle_deg): | ||||||
|     import numpy as np |     import numpy as np | ||||||
| @@ -88,11 +172,6 @@ def convert_matrix_data_into_xyz_data(x_array, y_array, matrix): | |||||||
|             z_array[ix*len_y+iy] = matrix[ix, iy] |             z_array[ix*len_y+iy] = matrix[ix, iy] | ||||||
|     return x_array, y_array, z_array |     return x_array, y_array, z_array | ||||||
|  |  | ||||||
| # 从列表中删除某个匹配的元素 |  | ||||||
| def remove_item_in_one_array(array, item): |  | ||||||
|     new_array = [x for x in array if x != item] |  | ||||||
|     return new_array  |  | ||||||
|  |  | ||||||
| # 并行计算前的预处理,把参数分成多份 | # 并行计算前的预处理,把参数分成多份 | ||||||
| def preprocess_for_parallel_calculations(parameter_array_all, task_num=1, task_index=0): | def preprocess_for_parallel_calculations(parameter_array_all, task_num=1, task_index=0): | ||||||
|     import numpy as np |     import numpy as np | ||||||
| @@ -127,78 +206,6 @@ def run_programs_sequentially(program_files=['./a.py', './b.py'], execute='pytho | |||||||
|         end = time.time() |         end = time.time() | ||||||
|         print('Total running time = '+str((end-start)/60)+' min') |         print('Total running time = '+str((end-start)/60)+' min') | ||||||
|  |  | ||||||
| # 判断一个数是否接近于整数 |  | ||||||
| def close_to_integer(value, abs_tol=1e-3): |  | ||||||
|     import math |  | ||||||
|     result = math.isclose(value, round(value), abs_tol=abs_tol) |  | ||||||
|     return result |  | ||||||
|  |  | ||||||
| # 根据子数组的第index个元素对子数组进行排序(index从0开始) |  | ||||||
| def sort_array_by_index_element(original_array, index): |  | ||||||
|     sorted_array = sorted(original_array, key=lambda x: x[index]) |  | ||||||
|     return sorted_array |  | ||||||
|  |  | ||||||
| # 随机获得一个整数,左闭右闭 |  | ||||||
| def get_random_number(start=0, end=1): |  | ||||||
|     import random |  | ||||||
|     rand_number = random.randint(start, end)   # 左闭右闭 [start, end] |  | ||||||
|     return rand_number |  | ||||||
|  |  | ||||||
| # 选取一个种子生成固定的随机整数,左闭右开 |  | ||||||
| def generate_random_int_number_for_a_specific_seed(seed=0, x_min=0, x_max=10): |  | ||||||
|     import numpy as np |  | ||||||
|     np.random.seed(seed) |  | ||||||
|     rand_num = np.random.randint(x_min, x_max) # 左闭右开[x_min, x_max) |  | ||||||
|     return rand_num |  | ||||||
|  |  | ||||||
| # 获取两个模式之间的字符串 |  | ||||||
| def get_string_between_two_patterns(original_string, start, end, include_start_and_end=0): |  | ||||||
|     import re |  | ||||||
|     pattern = f'{start}(.*?){end}' |  | ||||||
|     result = re.search(pattern, original_string) |  | ||||||
|     if result: |  | ||||||
|         if include_start_and_end == 0: |  | ||||||
|             return result.group(1) |  | ||||||
|         else: |  | ||||||
|             return start+result.group(1)+end |  | ||||||
|     else: |  | ||||||
|         return '' |  | ||||||
|      |  | ||||||
| # 删除某个字符串中两个模式之间的内容,返回新字符串 |  | ||||||
| def remove_substrings(original_string, start, end): |  | ||||||
|     import re |  | ||||||
|     escaped_start = re.escape(start) |  | ||||||
|     escaped_end = re.escape(end) |  | ||||||
|     pattern = f'{escaped_start}.*?{escaped_end}' |  | ||||||
|     return re.sub(pattern, '', original_string, flags=re.DOTALL) |  | ||||||
|  |  | ||||||
| # 打印数组 |  | ||||||
| def print_array(array, line_break=0): |  | ||||||
|     if line_break == 0: |  | ||||||
|         for i0 in array: |  | ||||||
|             print(i0) |  | ||||||
|     else: |  | ||||||
|         for i0 in array: |  | ||||||
|             print(i0) |  | ||||||
|             print() |  | ||||||
|  |  | ||||||
| # 以显示编号的样式,打印数组 |  | ||||||
| def print_array_with_index(array, show_index=1, index_type=0): |  | ||||||
|     if show_index==0: |  | ||||||
|         for i0 in array: |  | ||||||
|             print(i0) |  | ||||||
|     else: |  | ||||||
|         if index_type==0: |  | ||||||
|             index = 0 |  | ||||||
|             for i0 in array: |  | ||||||
|                 print(index, i0) |  | ||||||
|                 index += 1 |  | ||||||
|         else: |  | ||||||
|             index = 0 |  | ||||||
|             for i0 in array: |  | ||||||
|                 index += 1 |  | ||||||
|                 print(index, i0) |  | ||||||
|  |  | ||||||
| # 根据一定的字符长度来分割文本 | # 根据一定的字符长度来分割文本 | ||||||
| def split_text(text, width=100):   | def split_text(text, width=100):   | ||||||
|     split_text_list = [text[i:i+width] for i in range(0, len(text), width)] |     split_text_list = [text[i:i+width] for i in range(0, len(text), width)] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user