gpt4 book ai didi

python - 如何根据条件删除包含 numpy 数组的列表中的行?

转载 作者:行者123 更新时间:2023-12-02 02:42:43 25 4
gpt4 key购买 nike

我有以下 numpy 数组 arr_split :

import numpy as np

arr1 = np.array([[1.,2,3], [4,5,6], [7,8,9]])

arr_split = np.array_split(arr1,
indices_or_sections = 4,
axis = 0)

arr_split

输出:

[array([[1., 2., 3.]]),
array([[4., 5., 6.]]),
array([[7., 8., 9.]]),
array([], shape=(0, 3), dtype=float64)]

如何删除“空”行(即在上面的例子中,它是最后一行)。数组arr_split可以有任意数量的“空”行。上述例如。恰好只有一行“空”。

我尝试使用列表理解,如下所示:

arr_split[[(arr_split[i].shape[0] != 0) for i in range(len(arr_split))]]

但这不起作用,因为列表理解 [(arr_split[i].shape[0] != 0) for i in range(len(arr_split))]部分返回一个列表,而我实际上只需要将列表中的元素输入 arr_split[]作为索引。

有人知道我该如何解决这个问题,或者还有其他方法吗?如果可能,寻找最简单的方法来执行此操作,而无需太多循环或 if 语句。

最佳答案

您可以将indices_or_sections值更改为第一个轴的长度,这将防止生成任何空数组

import numpy as np

arr1 = np.array([[1.,2,3], [4,5,6], [7,8,9]])

arr_split = np.array_split(arr1,
indices_or_sections = arr1.shape[0],
axis = 0)

arr_split

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

关于python - 如何根据条件删除包含 numpy 数组的列表中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63303505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com