python学习笔记--创建包含子列表的列表

文章介绍了使用列表和NumPy包如np创建二维数组的方法,强调了NumPy的ndarray对象在内存管理和向量化运算上的优势,以及如何高效地生成不同类型的初始化数组。
摘要由CSDN通过智能技术生成

一、list方式构造

tmp = [[0] * 2 for _ in range(3)]
#  结果为
[[0, 0], [0, 0], [0, 0]]

这行代码创建了一个包含3个子列表的列表,每个子列表包含2个元素,都是0。这种方法可以用来创建一个二维数组或矩阵。

列表支持操作符,如果一个列表与 ‘ * ’ 号结合使用,能达到重复列表的效果。比如

list_one = [0]
list_two = [0] * 3
print(list_one)
print(list_two)

运行结果:

[0]
[0, 0, 0]

如果想要给一个初始化的值,可以写成:

L = [[0] * n] * m

但是,由于此方法构造的二维数组是对[]*n引用了m次,更改其中一行的值会导致每行的值都被更改。所以,并不是一个可以完全操控到列粒度的二维数组。应用背景极其狭窄,不推荐使用。
因此可以使用

list_three = [[0 for i in range(3)] for j in range(3)]

二、利用numpy包构建二维数组(矩阵)

介绍

NumPy 全称为 Numerical Python,是 Python 的一个以矩阵为主的用于科学计算的基础软件包。NumPy 和 Pandas、Matpotlib 经常结合一起使用,所以被人们合称为数据分析三剑客。

Numpy 中有功能强大的 ndarray 对象,能创建 N 维的数组,另外还提供很多通用函数,支持对数组的元素进行操作、支持对数组进行算法运算以及提供常用的统计函数。

优势

相比 List 对象,NumPy 数组有以下优势:

  1. 这是因为列表 list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中。这样数组计算遍历所有元素,不像列表 list 还需要对内存地址进行查找,从而节省了计算资源。
  2. Numpy数组能够运用向量化运算来处理整个数组,速度较快;而 Python 的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。
  3. Numpy 使用了优化过的 C API,运算速度较快。

导入

import numpy as np

举例:

1.创建一个3行4列初始化全为0的二维数组

m = 3
n = 4
mat = np.zeros((m, n))

2.构建一个m行n列的初始化为0-1随机数的二维数组:

m = 3
n = 4
mat = np.random.random((m, n))

3.构建一个m行n列的初始化为1-11步长为2的二维数组:

m = 2
n = 3
mat = np.arange(1, 12, 2).reshape(m, n)

4.创建一维数组

nd_one = np.array([1, 2, 3])

5.创建二维数组

nd_two = np.array([[1, 2, 3], [4, 5, 6]])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值