CQU计算机科学学院:数据结构——数组详解与实现

版权申诉
0 下载量 84 浏览量 更新于2024-07-03 收藏 689KB PDF 举报
本份数据结构英文教学课件《11_Array.pdf》涵盖了数据结构中的核心主题——数组(Arrays)。在计算机科学的背景下,数组是一种基本的数据结构,用于存储具有相同类型的数据元素,并通过唯一的索引进行访问。数组被视为一种抽象数据类型(Array ADT),它提供了一种高效的数据组织方式,尤其是对于大量数据分析和处理。 课程首先介绍了数组的基本概念,强调了数组是通过一组有序的索引(index)与相应的值(value)对组成,例如一维数组 {0,...,n-1} 和二维数组 {(0,0), (0,1), ...}。数组的主要特点是每个索引对应一个特定的值,且索引通常是有限的,具有固定维度。 接下来,课件深入探讨了不同类型的数组实现: 1. **Array ADT**:这是对数组抽象层次的描述,定义了创建数组的基本方法,如`ArrayCreate(j, list)`,该函数接受一个维度数量j和一个元组list,其中每个元素表示相应维度的大小。初始创建的数组元素值默认为未定义。 2. **Matrix**:数组的一个重要子集,特别是在线性代数中,矩阵由行和列组成,通常用于解决多变量问题。课程可能介绍了矩阵的不同类型,如对称矩阵(Symmetric Matrix)、三角矩阵(Triangular Matrix)、对角矩阵(Symmetric Band Matrix)以及稀疏矩阵(Sparse Matrix),这些都有各自的特性,如对称矩阵的对角元素相等,三角矩阵有上三角或下三角结构,而稀疏矩阵主要关注非零元素的存储效率。 3. **数组的表示与操作**:数组通常采用连续内存的方式来存储,使得访问元素的时间复杂度为O(1),这对于需要频繁读写数据的应用非常有利。此外,课件还讨论了数组的转置(Transpose),这是一个常见的操作,将数组的行变为列,或者列变为行,这对于矩阵运算尤为重要。 4. **遍历和方法**:数组提供了诸如`Foreach index, there is a value associated with that index`这样的操作,允许遍历整个数组并执行相应的操作。数组的方法还包括对数组进行初始化、插入、删除和搜索等操作,这些操作的效率取决于具体实现和数据结构优化。 这份教学课件不仅介绍了数组的基本概念,还深入剖析了其在实际应用中的不同形态和操作,为学生理解和掌握数据结构中的数组概念和使用提供了丰富的教学材料,有助于在大数据、数据分析和数据挖掘等领域运用。
2023-06-10 上传

此代码import os import numpy as np from PIL import Image def process_image(image_path, save_path): # 读取nii文件 image_array = np.load(image_path).astype(np.float32) # 归一化到0-255之间 image_array = (image_array - np.min(image_array)) / (np.max(image_array) - np.min(image_array)) * 255 # 将数据类型转换为uint8 image_array = image_array.astype(np.uint8) # 将三维图像分成若干个二维图像 for i in range(image_array.shape[0]): image = Image.fromarray(image_array[i]) image.save(os.path.join(save_path, f"{i}.png")) def process_label(label_path, save_path): # 读取nii文件 label_array = np.load(label_path).astype(np.uint8) # 将标签转换为灰度图 label_array[label_array == 1] = 255 label_array[label_array == 2] = 128 # 将三维标签分成若干个二维标签 for i in range(label_array.shape[0]): label = Image.fromarray(label_array[i]) label.save(os.path.join(save_path, f"{i}.png")) # LiTS2017数据集路径 data_path = "C:\\Users\\Administrator\\Desktop\\LiTS2017" # 保存路径 save_path = "C:\\Users\\Administrator\\Desktop\\2D-LiTS2017" # 创建保存路径 os.makedirs(save_path, exist_ok=True) os.makedirs(os.path.join(save_path, "image"), exist_ok=True) os.makedirs(os.path.join(save_path, "mask"), exist_ok=True) # 处理Training Batch 1 image_path = os.path.join(data_path, "Training Batch 1", "volume-{}.npy") for i in range(131): process_image(image_path.format(i), os.path.join(save_path, "image")) # 处理Training Batch 2 label_path = os.path.join(data_path, "Training Batch 2", "segmentation-{}.npy") for i in range(131): process_label(label_path.format(i), os.path.join(save_path, "mask"))出现FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Administrator\\Desktop\\LiTS2017\\Training Batch 1\\volume-0.npy',修复它,并给出完整代码

2023-05-24 上传