用python求矩阵每列大于0的最小值
时间: 2024-02-05 18:13:31 浏览: 75
可以使用NumPy库来实现这个功能。具体步骤如下:
1. 导入NumPy库
```python
import numpy as np
```
2. 定义矩阵
假设我们要求解的矩阵为`mat`,可以用以下代码定义:
```python
mat = np.array([[1, -2, 3], [4, 5, -6], [-7, 8, 9]])
```
3. 使用`np.where`函数找到每列大于0的元素的索引
```python
indices = np.where(mat > 0)[1]
```
这里`np.where`函数返回的是一个元组,第一个元素是行索引的数组,第二个元素是列索引的数组。因为我们只需要列索引,所以使用索引`1`来获取。
4. 使用`np.unique`函数获取不重复的列索引
```python
unique_indices = np.unique(indices)
```
这里`np.unique`函数可以帮助我们去除重复的列索引。
5. 使用`np.min`函数找到每列大于0的最小值
```python
result = np.min(mat[:, unique_indices], axis=0)
```
这里`mat[:, unique_indices]`表示取出矩阵`mat`中所有行,但只取出列索引在`unique_indices`中的列。然后使用`np.min`函数找到每列的最小值,最后使用`axis=0`参数来指定按列进行计算。
完整代码如下:
```python
import numpy as np
mat = np.array([[1, -2, 3], [4, 5, -6], [-7, 8, 9]])
indices = np.where(mat > 0)[1]
unique_indices = np.unique(indices)
result = np.min(mat[:, unique_indices], axis=0)
print(result)
```
输出结果为:
```
[1 8]
```
表示第一列和第三列都大于0,它们的最小值分别为1和8。
阅读全文