Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将二维numpy数组的行保存到另一个数组中_Python_Arrays_Numpy - Fatal编程技术网

Python 将二维numpy数组的行保存到另一个数组中

Python 将二维numpy数组的行保存到另一个数组中,python,arrays,numpy,Python,Arrays,Numpy,我有一个二维np数组V(100000x50)。我想创建一个新的数组V_tgt,在其中我只保留某些行的V,因此维度将是(ix50)。这可能很容易做到,但我尝试了不同的方法,似乎只保存了50个元素中的第一个。我的代码如下: V_tgt = np.array([]) for i in IX_items: if i in IX_tgt_items: V_tgt=np.append(V_tgt, V[i]) 我也尝试了诸如insert和delete之类的函数,但都不起作用。如何保

我有一个二维np数组V(100000x50)。我想创建一个新的数组V_tgt,在其中我只保留某些行的V,因此维度将是(ix50)。这可能很容易做到,但我尝试了不同的方法,似乎只保存了50个元素中的第一个。我的代码如下:

V_tgt = np.array([])
for i in IX_items:
    if i in IX_tgt_items:
        V_tgt=np.append(V_tgt, V[i])

我也尝试了诸如insert和delete之类的函数,但都不起作用。如何保存所有值并创建具有正确维度的数组?非常感谢您的帮助。

从您的评论中,我假设您有某种类型的目标索引列表(在我的示例中为
tgt_idx1
tgt_idx2
),它告诉您从V中获取哪些元素。您可以这样做:

import numpy as np

V = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
tgt_idx1 = np.array([1, 2, 3])
tgt_idx2 = np.array([1, 3])


mask = []
for i, elem in enumerate(V):
    inTargets = i in tgt_idx1 and i in tgt_idx2
    mask.append(inTargets)
print mask

V_tgt = V[mask]
print V_tgt
这张照片

[False, True, False, True]
[[ 4  5  6]
 [10 11 12]]

根据您的评论,我假设您有某种类型的目标索引列表(在我的示例中是
tgt_idx1
tgt_idx2
),它告诉您从V中获取哪些元素。您可以这样做:

import numpy as np

V = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
tgt_idx1 = np.array([1, 2, 3])
tgt_idx2 = np.array([1, 3])


mask = []
for i, elem in enumerate(V):
    inTargets = i in tgt_idx1 and i in tgt_idx2
    mask.append(inTargets)
print mask

V_tgt = V[mask]
print V_tgt
这张照片

[False, True, False, True]
[[ 4  5  6]
 [10 11 12]]

让我们先简化这个问题。使用初始
数组(
a
):

以及
索引
数组

i1 = np.array([1, 3, 5, 7, 9])
i2 = np.array([0, 1, 2, 3, 4])
然后,我们可以使用一个简单的
列表
理解,从
a
中获取
索引
i1
i2
中的元素:

np.array([e for i, e in enumerate(a) if i in i1 and i in i2])
其可读性强,输出:

array([29, 23])


我相信您可以将其调整为
变量
您为
数组

提供的变量。让我们首先简化这个问题。使用初始
数组(
a
):

以及
索引
数组

i1 = np.array([1, 3, 5, 7, 9])
i2 = np.array([0, 1, 2, 3, 4])
然后,我们可以使用一个简单的
列表
理解,从
a
中获取
索引
i1
i2
中的元素:

np.array([e for i, e in enumerate(a) if i in i1 and i in i2])
其可读性强,输出:

array([29, 23])


我相信您可以将其适应于您为
数组提供的
变量

np.append的性能可能会扼杀这一点,为什么不创建两个索引的新重叠,然后再创建子集:

#using @Joe Iddons data
a = np.array([45, 29, 76, 23, 76, 98, 21, 63])
i1 = np.array([1, 3, 5, 7, 9])
i2 = np.array([0, 1, 2, 3, 4])
然后找到i1和i2的交点:

indices = np.intersect1d(i1,i2)
和子集:

a[indices]
array([29, 23])

np.append的性能可能会扼杀这一点,为什么不创建两个索引的新重叠,然后创建子集:

#using @Joe Iddons data
a = np.array([45, 29, 76, 23, 76, 98, 21, 63])
i1 = np.array([1, 3, 5, 7, 9])
i2 = np.array([0, 1, 2, 3, 4])
然后找到i1和i2的交点:

indices = np.intersect1d(i1,i2)
和子集:

a[indices]
array([29, 23])

什么是V
V_tgt=np.append(V_tgt,V[i])
对不起,我忘了指定它。V是初始数组,维度100000 X50,那么MFR是什么?考虑用更详细的方式重写你的文章。没有人能够按原样为您提供答案。IX_项和IX_tgt_项只是索引,其想法是,如果索引同时位于第一个和最后一个,那么我希望保存该索引的数据。V是什么
V_tgt=np.append(V_tgt,V[i])
对不起,我忘了指定它。V是初始数组,维度100000 X50,那么MFR是什么?考虑用更详细的方式重写你的文章。没有人能够按原样为您提供答案。IX_项和IX_tgt_项只是索引,其想法是,如果索引同时位于第一个和最后一个,那么我希望保存该索引的数据。