我要新生成一个A,要求必须B列对应的位置是1,能用np.where实现吗
时间: 2024-03-16 20:45:36 浏览: 42
python由已知数组快速生成新数组的方法
可以使用`np.where`函数实现这个要求。下面是一个示例代码:
```python
import numpy as np
# 假设原始数组是 arr,需要生成一个新数组 A,对应的列是 B
arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
B = np.array([0, 1, 0])
# 使用 np.where 函数生成新数组 A
A = np.where(B.reshape(-1, 1), arr, 0)
print(A)
```
输出结果为:
```
[[0 0 0]
[3 4 5]
[0 0 0]]
```
在上面的代码中,`np.where(B.reshape(-1, 1), arr, 0)` 的意思是,将数组 B 转换成一个列向量,然后使用 `np.where` 函数,将 B 中为 1 的位置对应的 arr 中的元素保留,其余位置用 0 填充,生成新的数组 A。
阅读全文