用python获取数组 a 和 b 中的共同项(索引位置相同,值也相同)。 a = np.array([1,2,3,2,3,4,3,4,5,6]),b = np.array([7,2,10,2,7,4,9,4,9,8])
时间: 2023-10-01 22:02:09 浏览: 72
可以使用numpy的where函数来实现:
```python
import numpy as np
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
# 找到共同项的索引位置
common_idx = np.where(a == b)[0]
# 找到共同项的值
common_values = a[common_idx]
print(common_idx) # 输出 [1 3 5 7]
print(common_values) # 输出 [2 2 4 4]
```
其中,np.where(a == b) 返回的是一个元组,第一个元素是共同项的索引位置的数组,所以我们需要取出第一个元素。
相关问题
a = np.random.random([100,3]) b = np.arange(100).reshape([100,1]) a = np.concatenate([a,b],axis=-1) c = np.random.random([7,3]) d = np.array([1,5,8,11,52,45,31]) c = np.concatenate([c,d],axis=-1) c中的-1列代表a中的索引位置,以此更新a的数值
你可以使用 `c` 中的索引位置来更新 `a` 中对应的数值,代码如下:
```python
for i in range(c.shape[0]):
index = int(c[i, -1]) # 获取索引位置
a[index, :-1] = c[i, :-1] # 更新 a 中对应索引位置的数值
```
首先,使用 `for` 循环遍历 `c` 中的每一行,获取该行的索引位置 `index`。然后,使用 `a[index, :-1]` 获取 `a` 中对应索引位置的数值,并使用 `c[i, :-1]` 更新 `a` 中对应的数值。最终,`a` 中的数值会被 `c` 中的数值更新。
a = np.random.random([100,3]) b = np.arange(100).reshape([100,1]) a = np.concatenate([a,b],axis=-1) c = np.random.random([7,3]) d = np.array([1,5,8,11,52,45,31]) c = np.concatenate([c,d],axis=-1) 按照c中的-1列代表的位置更新a的数值
可以使用以下代码实现:
``` python
a[:, -1] = c[:, -1][b[:, 0]]
```
解释一下,首先通过 `b[:, 0]` 获取 `a` 中最后一列对应的索引,因为 `b` 是按照顺序从 0 到 99 排列的,所以可以直接用 `b` 的值作为索引。然后再用这些索引从 `c` 中取出对应位置的数值,赋值给 `a` 的最后一列即可。
阅读全文