python的numpy问题以及答案
### Python的Numpy知识点解析 #### 一、创建特定类型的数组 **知识点1:创建一个3×3的0数组(整数)** - 使用`np.zeros`函数可以创建指定形状和数据类型的数组。 - 参数说明: - 形状:`(3, 3)`表示3行3列的二维数组。 - 数据类型:`'u2'`表示无符号整型(unsigned integer),这里指定了宽度为2字节(即16位)。 - 示例代码: ```python import numpy as np a = np.zeros((3, 3), dtype='u2') print(a) ``` **知识点2:创建一个3×3的空数组(空字符串)** - `np.empty`函数用于创建一个未初始化的数组,其内容是未知的。 - 参数说明: - 形状:`(3, 3)`表示3行3列的二维数组。 - 数据类型:`'S'`表示字符串类型,这里没有指定长度,因此默认为一个字符。 - 示例代码: ```python a = np.empty((3, 3), dtype='S') print(a) ``` **知识点3:创建一个3×3的bool数组(False)** - **方法一**:使用`np.full`函数,可以填充指定值来创建数组。 - 参数说明: - 形状:`(3, 3)` - 填充值:`False` - 示例代码: ```python a = np.full((3, 3), False) print(a) ``` - **方法二**:先创建一个Python列表,再转换成Numpy数组。 - 示例代码: ```python a = [[False, False, False], [False, False, False], [False, False, False]] b = np.asarray(a) print(b) ``` **知识点4:创建一个3×3的1数组(64位复数)** - `np.full`函数也可以用来创建指定值的数组。 - 参数说明: - 形状:`(3, 3)` - 填充值:`1` - 数据类型:`'c16'`表示64位复数类型。 - 示例代码: ```python a = np.full((3, 3), 1) dt = 'c16' b = np.array(a, dtype=dt) print(b) ``` #### 二、创建并操作数组 **知识点5:创建一个5×5的数组,其中每行的数值均为1-5(整数)** - 方法一:使用`np.ones`函数创建初始值为1的数组,然后加上`np.arange(5)`。 - 示例代码: ```python a = np.ones((5, 5), dtype='i') + np.arange(5) print(a) ``` - 方法二:首先创建一个包含1-5的数组,然后使用`np.resize`函数扩展该数组。 - 示例代码: ```python a = np.arange(1, 6) b = np.resize(a, (5, 5)) print(b) ``` #### 三、生成随机数 **知识点6:创建包含10个元素的随机浮点数数组,数组元素服从[0,1)的均匀分布** - 使用`np.random.random`函数生成服从[0,1)均匀分布的随机数。 - 示例代码: ```python a = np.random.random(10) print(a) ``` **知识点7:创建包含10个元素的随机浮点数数组,数组元素服从[0,100)的均匀分布** - 可以通过乘法调整随机数的范围。 - 示例代码: ```python a = np.random.random(10) * 100 print(a) ``` **知识点8:创建一个2×4的随机浮点数数组,数组元素服从标准正态分布** - 使用`np.random.randn`函数生成服从标准正态分布的随机数。 - 示例代码: ```python a = np.random.randn(2, 4) print(a) ``` **知识点9:创建一个2×4的随机浮点数数组,数组元素服从均值为μ,标准差为σ的正态分布** - 使用`np.random.normal`函数生成服从指定均值和标准差的正态分布的随机数。 - 参数说明: - 均值:`mu=0.5` - 标准差:`sigma=1` - 示例代码: ```python mu = 0.5 sigma = 1 a = np.random.normal(mu, sigma, (2, 4)) print(a) ``` #### 四、数组索引与切片 **知识点10:创建一个4×4的数组,输出其四个角的元素到一维数组中(列优先)** - 创建一个`4×4`的数组,并使用索引来提取四个角的元素。 - 示例代码: ```python a = np.arange(16).reshape(4, 4) y = a[[0, 3, 0, 3], [0, 0, 3, 3]] print(y) ``` **知识点11:创建一个6×6的随机整数数组,元素服从(1,100]的均匀分布** - 使用`np.random.randint`函数生成指定范围内的随机整数数组。 - 参数说明: - 最小值:`2` - 最大值:`101`(不包括) - 数组大小:`36`(6×6) - 示例代码: ```python a = np.random.randint(2, 101, 36).reshape(6, 6) print(a) ``` **知识点12:提取数组中的特定元素** - 提取原数组的第2列和第5列。 - 示例代码: ```python d = a[:, (1, 4)] print(d) ``` - 提取原数组的第1-3行和2-4列。 - 示例代码: ```python e = a[0:3, 1:4] print(e) ``` - 提取原数组中所有大于50的元素。 - 示例代码: ```python f = a[a > 50] print(f) ``` **知识点13:数据规范化处理** - 对数组进行离差标准化处理(映射到0-1之间)。 - 示例代码: ```python ma = np.amax(a) mi = np.amin(a) u = np.array([], dtype='i') for x in np.nditer(a): u = np.append(u, (x - mi) / (ma - mi)) print(u) ``` #### 五、高级应用 **知识点14:生成杨辉三角** - 使用双重循环来构建杨辉三角。 - 示例代码: ```python n = int(input('请输入一个整数:')) table = np.zeros((n, n), dtype=int) for i in range(n): for j in range(i + 1): if i == 0 or j == 0 or j == i: table[i, j] = 1 else: # 此处应补充完成杨辉三角的计算逻辑 print(table) ``` 以上知识点涵盖了Numpy中创建特定类型数组、生成随机数、数组索引与切片以及高级应用等方面的基础和进阶操作。这些知识点对于掌握Numpy的基本用法和提高数据分析能力非常关键。