将数组中的N个元素从末尾移动到前面

3

我有一个包含两列的文本文件,我需要选择其中一列作为数组,该数组包含200000个元素并从中截取N个元素,然后将它们从末尾移动到数组的最前面。

我使用了以下代码:

import numpy as np
import glob

files = glob.glob("input/*.txt")

for file in files:
     data_file = np.loadtxt(file)
     2nd_columns = data_file [:,1]
     2nd_columns_array = np.array(2nd_columns)

cut = 62859  # number of elements to cut
remain_points = 2nd_columns_array[:cut]
cut_points = 2nd_columns_array[cut:]
new_array = cut_points + remain_points

它无法工作,给了我以下错误:
ValueError: operands could not be broadcast together with shapes (137141,) (62859,) 

有任何帮助吗?

2个回答

0

它不起作用是因为您正在尝试添加存储在两个数组中的值,而它们具有不同的形状。

其中一种方法是使用 numpy.hstack

new_array = np.hstack((2nd_columns_array[cut:], 2nd_columns_array[:cut]))

注意事项:

  1. 您的代码只会重新排列最后一个文件的第二列,因为重新排序在 for 循环之外。
  2. 您不需要将 cut_pointsremain_points 存储在单独的变量中。您可以直接操作 2nd_columns_array
  3. 您不应该以数字开头命名变量。

我怎样才能直接操作我的切割机?我尝试过了,但是它不起作用! - H. H
你可以直接使用上面片段中的2nd_columns_array,不再需要remain_pointscut_points这两个变量。请确保按照我在片段中所做的方式进行操作。 - machnic
@machnic- 它运行良好。非常感谢您的帮助。 - H. H

0
一个简单的方法是使用numpy.roll
new_array = np.roll(2nd_column, cut)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接