如何删除数组中的多行

时间:2019-10-07 04:51:12

标签: python python-3.x numpy

我必须删除数组的最后三行。它是列表,但我必须将其转换为数组,以便可以使用np.delete函数

我尝试了np.delete函数。它将按列而不是按行删除。

我要删除行而不是列。当我将轴更改为1时,它会出现AxisError错误消息:轴1超出了尺寸为1的数组的边界

featureStr2=np.delete(f, slice(3,-1), axis=0)。我想删除最后3行。数组如下所示

1 2 3 4 5

6 7 8 9 20

11 23 54 6 7

2 3 4 5 6 7

1 2 3 4 5

输出的代码是。我希望输出删除最后3行。

4 个答案:

答案 0 :(得分:2)

不要删除numpy。删除会触发重新分配,这很昂贵。便宜(适当)的解决方案是仅使用索引创建视图:

 var firstField = FocusNode();
  var secondField = FocusNode();
  @override
  Widget build(BuildContext context) {
    return Column(children: <Widget>[
      TextFormField(
        focusNode: firstField,
        onChanged: (text) {
          print("First  field: $text");
        },
      ),
      TextFormField(
        focusNode: secondField,
        onChanged: (text) {
          if (text.length <= 0) {
            FocusScope.of(context).requestFocus(firstField);
          }
          print("Second  field: $text");
        },
      )
    ]);
  }

答案 1 :(得分:0)

您需要的是轴和对象:

语法:numpy.delete(arr, obj, axis=None)

object:是行号或列号或索引

轴:行为0,列为1

例如我假设您的数组看起来像这样。

a = np.array([[1,2,3,4,5], [2,4,5,6,7], [3,4,5,6,7], [5,7,8,9,1]])
>>> np.delete(a, [2,3], axis=0)
array([[1, 2, 3, 4, 5],
       [2, 4, 5, 6, 7]])

P.S。目前np.delete不支持负索引,将来会支持负索引,所以我建议您先获取要删除的行的索引,然后将其传递给np.delete()中的obj

答案 2 :(得分:0)

您可以通过使用具有drop,indexing和condition函数的熊猫来拖放行

import numpy as np
import pandas as pd
df = ([1,2,3,4,5], [6,7,8,9,20],[11,23,54,6,7],[2,3,4,5,6,7],[1,2,3,4,5])
series = pd.DataFrame(df)

使用放置功能

series1 = series.drop([2,3,4])
print(series1)

使用索引功能

series1 = series.drop(series.index[2,3,4]
print(series1)

答案 3 :(得分:0)

最简单的方法是只使用基本索引

>>>import numpy as np

>>>arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 20], [11, 23, 54, 6, 7], 
[2, 3, 4, 6, 7],[1,2, 3, 4, 5]])

>>>arr = arr[:-3]

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 20]])

np.delete(arr,obj,axis = None)的对象参数中不包含负索引

此外,如果数组大小很大,那么提供要删除的每一行,每一列或每个元素的索引就变得很麻烦。

>>>np.delete(arr, [2,3,4], axis=0) 

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 20]])

但是通过使用np.s_,您可以为函数提供切片

>>>np.delete(arr, np.s_[2:5], axis=0)

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 20]])

您可以为np.s_提供负索引

>>>np.delete(arr, np.s_[-3:], axis=0)

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 20]])