首页 > 解决方案 > 通过空索引

问题描述

我有实现类似于以下内容的python代码:

import numpy as np
x = np.array([1,1,0,2,1,4])
ind = np.array([0,3,5])

def foo(x, ind):
    x1 = x[ind]
    x2 = np.delete(x, ind)
    return x1, x2

foo(x, ind)

向量x由用户传递给函数,并在函数内x根据 中的一些预定索引分成两个向量ind。然后,稍后在函数中对向量执行一些工作,x1并且x2(有条件地,如果它们存在)

从概念上讲,有 3 种可能的结果,目前根据我编写此代码的方式,我只能使其中两种工作。结果 1) 所有值都分配给x1,没有分配给x2ind = range(6)例如,当使用上面的示例代码的值时,就会这样做。结果 2) 一些值被分配给x1,其余的被分配给x2。这个结果就是上面提供的示例中的代码。

但是,我无法弄清楚的是结果 3)所有值都分配给x2,没有分配给x1. 在我如何编写此代码的上下文中,是否可以为ind向量中的所有内容分配一些值而x不会分配x2任何内容x1

谢谢您的支持。

标签: pythonnumpy

解决方案


你想像下面那样拆分numpy数组吗?然后你可以这样做。

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
ind = 4
newarr = arr[0:ind]

print(newarr)

推荐阅读