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

时间:2019-06-04 11:53:37

标签: python arrays python-3.x

我正在使用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用户)。

1 个答案:

答案 0 :(得分:1)

我不确定该答案是否是您想要的,但是它应该可以工作:

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.我认为这是它对您不起作用的原因,因为在程序启动时,解释器不知道较小的数组大小。