首页 > 解决方案 > 对于两个包含不同数量元素的一维数组,如何从一个数组中删除元素,使其与另一个数组大小相同?

问题描述

我正在使用 Python 来处理大型数据文件。我首先从几个不同的文件中获取数据并将其存储。下面为“时间”数据提供了从一个文件中提取数据的示例。然后我根据其他文件中的数据绘制数据(如“时间”)或执行计算。

skip        = int(input('\nSkip how many steps?\n'))
datai       = loadtxt(filei,skiprows=(1+skip))
time        = datai[:,0]

我的问题是从不同文件创建的数组(如“时间”)通常不包含相同数量的元素。因此,当我尝试执行计算或绘制绘图时,这会导致错误。例如:

ValueError: operands could not be broadcast together with shapes (128471,) (116102,) 

有谁知道如何从一维数组中删除元素,使其与参考数组的长度相同(如“时间”)?我知道如何从特定数组中删除 n 个元素,但不知道如何执行诸如“计算‘时间’长度然后使数组‘温度’长度相同”之类的操作,至少效率不高。

重要的是元素只从数组的末端被移除——也就是说,所有数组中的所有元素都保持在它们的原始位置(“时间”的元素“2”与“温度”的元素“2”相同) )。

我很抱歉; 这似乎是以前可能被问过的问题,但到目前为止我还没有成功地在网上找到解决方案,可能是因为我不熟悉适当的搜索词(我不是经验丰富的 Python 用户)。

标签: pythonarrayspython-3.x

解决方案


我不确定该答案是否是您正在寻找的答案,但它应该可以工作:

x = [2,4,3,2,6,4,4,4,3,3,3]

y = [3,4,6]

y.append(7)

z = []

for i in range(len(y)):
    z.append(x[i])

print(z)
print(y)

结果:[2, 4, 3, 2], [3, 4, 6, 7]

它不会比 x = x[:len(y)] 效率低,但由于 y 的大小在程序运行期间发生变化,它不会分配额外的内存,因此它会使 x 的大小为 3。我假设这就是它对您不起作用的原因,因为解释器在程序启动时不知道 small_array 的大小。


推荐阅读