如何使用NumPy快速创建我们需要的数据?

不论是在平时的零碎学习还是网课的学习中,在代码上现实或者跑通一个算法或者模型不仅能够让自己理解的更深还能加强我们的记忆。所以,专门花点时间学习一下如何创建和组织出我们想要的数据很有必要。

1. NumPy 数组

NumPy 数组需要注意的一点是,数组是相同类型的元素按照一定顺序排列的组合。

2. NumPy 数组的生成方式

注意
① 生成一般数组可以通过 dtype 参数指定 NumPy 数组元素的数据类型。
② 一般都可以传入一个数字或者一个 shape 作为参数,后者生成的是大小为 shape 的数组

2.1 生成一般数组

  • 生成一维数组:传入列表
  • 生成元组的数组:传入元组
  • 生成多维数组:传入嵌套列表

附代码:

import numpy as np

arr1 = np.array([1,2,3,4,5])
print(arr1)

arr2 = np.array((1,2,3,4,5))
print(arr2)

arr3 = np.array([[1,2,3],[2,3,4],[4,5,6]])
print(arr3)  ## 这里注意 numpy 数组的打印规则:最内层轴的元素是从左至右,剩下的轴都是从上至下
[1 2 3 4 5]
[1 2 3 4 5]
[[1 2 3]
 [2 3 4]
 [4 5 6]]

2.2 生成特殊类型数组

2.2.1 zeros、ones、eye

  • 生成指定形状全为 0 的数组(传入单个数字或形状):np.zeros()
  • 生成指定形状全为 1 的数组(传入单个数字或形状):np.ones()
  • 生成一个方形矩阵(传入单个数字):np.eye()

注意:以带括号的元组形式来传递形状

arr4 = np.zeros(3) # 传递单个数字是一维数组
print(arr4)

arr5 = np.ones((3, 3))  # 传递shape 是大小为 shape 的数组
print(arr5)

arr6 = np.eye(3)  # 方阵,至只能传递单个数字
print(arr6)
[0. 0. 0.]
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
[
<think>我们使用numpy库来生成矩阵。numpy提供了多种生成矩阵的方法,例如: 1. 从列表或元组创建数组:使用numpy.array()函数。 2. 生成全0或全1的矩阵:使用numpy.zeros()和numpy.ones()。 3. 生成单位矩阵:使用numpy.eye()或numpy.identity()。 4. 生成随机矩阵:使用numpy.random模块中的函数,如rand, randn, randint等。 5. 生成等差数列的矩阵:使用numpy.arange()或numpy.linspace()。 下面我将分别给出这些方法的示例代码。</think>在NumPy中,生成矩阵主要通过`numpy.array()`函数或专用矩阵创建函数实现。以下是详细方法和代码示例: ### 1. **从列表/元组创建矩阵** 最基础的方法是将嵌套列表转换为矩阵: ```python import numpy as np # 从列表创建2x3矩阵 matrix = np.array([[1, 2, 3], [4, 5, 6]]) print("2x3矩阵:\n", matrix) ``` ### 2. **特殊矩阵生成函数** NumPy提供快速生成特殊矩阵的函数: ```python import numpy as np # 3x3全零矩阵 zeros = np.zeros((3, 3)) # 2x4全1矩阵 ones = np.ones((2, 4)) # 3x3单位矩阵 identity = np.eye(3) # 5x5随机矩阵(0-1均匀分布) random_matrix = np.random.rand(5, 5) print("全零矩阵:\n", zeros) print("全1矩阵:\n", ones) print("单位矩阵:\n", identity) print("随机矩阵:\n", random_matrix) ``` ### 3. **数值范围矩阵** 生成等差数列构成的矩阵: ```python import numpy as np # 0-9的一维数组 arr1d = np.arange(10) # 0-24的5x5矩阵 arr2d = np.arange(25).reshape(5, 5) # 0-10间等距的12个数 linspace_arr = np.linspace(0, 10, 12) print("一维数组:\n", arr1d) print("5x5矩阵:\n", arr2d) print("线性间隔数组:\n", linspace_arr) ``` ### 4. **矩阵属性设置** 创建时指定数据类型和内存布局: ```python import numpy as np # 指定数据类型为float32 float_matrix = np.array([[1, 2], [3, 4]], dtype=np.float32) # 使用Fortran列优先内存布局 fortran_matrix = np.array([[1, 2], [3, 4]], order='F') print("浮点矩阵类型:", float_matrix.dtype) print("内存布局:", fortran_matrix.flags.f_contiguous) ``` ### 关键说明: - **`np.array()`**:核心创建函数,接受嵌套序列 - **`np.zeros()`/`np.ones()`**:快速生成全0/全1矩阵 - **`np.eye()`**:生成单位矩阵(对角线为1) - **`reshape()`**:改变数组维度而不复制数据 - **`dtype`参数**:控制数据类型(如int32, float64等) - **`order`参数**:'C'为行优先(默认),'F'为列优先 ### 示例输出 ``` 2x3矩阵: [[1 2 3] [4 5 6]] 5x5随机矩阵: [[0.23 0.85 0.41 0.92 0.01] [0.67 0.53 0.72 0.18 0.46] ...] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值