python - 如何从两个不同的 numpy 数组创建一个 numpy 数组?

标签 python arrays numpy

我想从两个不同的凹凸数组创建一个凹凸数组。例如:

假设我有 2 个数组 a 和 b。

a = np.array([1,3,4])

b = np.array([[1,5,51,52],[2,6,61,62],[3,7,71,72],[4,8,81,82],[5,9,91,92]])

我希望它循环遍历数组a中的每个索引并在数组b中找到它,然后将b的行保存到c中。如下所示:

c = np.array([[1,5,51,52],
              [3,7,71,72],
              [4,8,81,82]])

我尝试过这样做:

c=np.zeros(shape=(len(b),4))

for i in b:
    c[i]=a[b[i][:]]  

但出现此错误“用作索引的数组必须是整数(或 bool )类型”

最佳答案

方法#1

如果a已排序,我们可以使用np.searchsorted ,就像这样 -

idx = np.searchsorted(a,b[:,0])         
idx[idx==a.size] = 0
out = b[a[idx] == b[:,0]]

示例运行 -

In [160]: a
Out[160]: array([1, 3, 4])

In [161]: b
Out[161]: 
array([[ 1,  5, 51, 52],
       [ 2,  6, 61, 62],
       [ 3,  7, 71, 72],
       [ 4,  8, 81, 82],
       [ 5,  9, 91, 92]])

In [162]: out
Out[162]: 
array([[ 1,  5, 51, 52],
       [ 3,  7, 71, 72],
       [ 4,  8, 81, 82]])

如果a未排序,我们需要将sorter参数与searchsorted一起使用。


方法#2

我们还可以使用np.in1d -

b[np.in1d(b[:,0],a)]

关于python - 如何从两个不同的 numpy 数组创建一个 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44723870/

相关文章:

python - 如何在 tkinter 中创建 4 个方 block ,使它们从屏幕中间开始,每个方 block 进入自己的角落并消失?

python - 计算 pandas 数据帧行之间的相似度

python - 如何使用 Python 将函数应用于列表中的元素对?

python - 在数字前加零使其成为 4 位数字

python - 在 Python 中,需要一种有效的方法将 kdtree 索引映射到值

java - seqSearchFunction(字符串 s,字符 c)

c - 旋转 90 度二维字符数组

javascript - 当我将数组索引存储为变量时,代码不起作用

python - 使用 numpy 获取每行的唯一计数〜和〜唯一值

python - Python 2.7 OpenCV matchTemplate,仅获取最佳匹配