从后向前移动数组中的N个元素

时间:2018-07-31 11:56:00

标签: arrays python-3.x slice python-import

我有一个包含2列的文本文件,我需要选择其中的一列作为数组  其中包含200000,并从该数组中剪切了N个元素,然后将它们从前向后移动。

我使用了以下代码:

 <android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="?android:actionBarSize"
    android:layout_gravity="bottom"
    android:background="@android:color/transparent"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_scrollFlags="scroll|enterAlways">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="visible"
        app:layout_behavior="com.imi.utils.ScrollingToolbarBehavior"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <include
            android:id="@+id/bottomBarLayout"
            layout="@layout/activity_custom_bottom_navigation" />
    </LinearLayout>
</android.support.v7.widget.Toolbar>

它不起作用,并给我以下错误:

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

有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

旁注:

  1. 使用您的代码,您将仅对最后一个文件的第二列进行重新排序,因为重新排序位于for循环之外
  2. 您无需将cut_poinstsremain_points存储在单独的变量中。您可以直接在2nd_columns_array
  3. 上进行操作
  4. 您不应从数字开始命名变量

答案 1 :(得分:0)

此过程的一种简单方法是numpy.roll

new_array = np.roll(2nd_column, cut)