我想从两个不同的凹凸数组创建一个凹凸数组。例如:
假设我有 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/