. 有一个`4`行`4`列的数组(比如:`np.random.randint(0,10,size=(4,4))`),请将其中对角线的数取出来形成一个一维数组。提示(使用`np.eye`)。
时间: 2024-09-13 09:11:44 浏览: 34
np.random一系列(np.random.normal()、np.random.randint、np.random.randn、np.random.rand)
要从一个4行4列的数组中提取对角线元素形成一维数组,可以使用NumPy库中的`np.eye`函数来生成一个对角线为1其余为0的单位矩阵,然后将这个单位矩阵与原数组进行逐元素乘法操作。由于只有对角线的元素在单位矩阵中为1,这样操作后对角线上的元素会保持原值,而其他元素都会变成0。最后再提取出对角线的元素即可。
具体步骤如下:
1. 生成原始的4x4数组。
2. 使用`np.eye(4)`生成4x4的单位矩阵。
3. 将单位矩阵与原始数组进行逐元素乘法。
4. 提取出结果数组的对角线元素形成一维数组。
示例代码如下:
```python
import numpy as np
# 假设原始的4x4数组如下:
a = np.random.randint(0, 10, size=(4, 4))
print("原始数组:")
print(a)
# 使用np.eye生成单位矩阵,并进行逐元素乘法
diagonal_product = a * np.eye(4)
print("乘法操作后的数组:")
print(diagonal_product)
# 提取出对角线元素形成一维数组
diagonal = np.diag(diagonal_product)
print("对角线元素形成的一维数组:")
print(diagonal)
```
阅读全文