小编ami*_*e23的帖子

测试2d numpy数组的成员资格

我有两个相同大小的2D阵列

a = array([[1,2],[3,4],[5,6]])
b = array([[1,2],[3,4],[7,8]])
Run Code Online (Sandbox Code Playgroud)

我想知道a中的b行.

所以输出应该是:

array([ True,  True, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

不做:

array([any(i == a) for i in b])
Run Code Online (Sandbox Code Playgroud)

因为a和b很大.

有一个函数可以执行此操作但仅适用于1D数组:in1d

python numpy

10
推荐指数
1
解决办法
2624
查看次数

为2D阵列实现numpy in1d?

我有一个2D numpy数组S代表一个状态空间,有80000000行(作为状态)和5列(作为状态变量).

我用S初始化K0,并且在每次迭代中,我对Ki中的所有状态应用状态转移函数f(x),并删除其f(x)不在Ki中的状态,从而得到Ki + 1.直到它收敛,即Ki + 1 = Ki.

这样做需要很长时间:

K = S
to_delete = [0]
While to_delete:
    to_delete = []
    for i in xrange(len(K)):
        if not f(i) in K:
        to_delete.append(K(i))
    K = delete(K,to_delete,0)
Run Code Online (Sandbox Code Playgroud)

所以我想做一个矢量化的实现:

在列中切片K,应用f并再次连接它们,从而以某种方式获得f(K).

现在的问题是如何获得一个长度为len(K)的数组,比如Sel,其中每一行Sel [i]确定f(K [i])是否在K中.正好像in1d函数一样.

那么制作起来会很简单

K=K[Sel]]
Run Code Online (Sandbox Code Playgroud)

python numpy

6
推荐指数
1
解决办法
2249
查看次数

标签 统计

numpy ×2

python ×2