python 的2维数组

本文介绍了如何在Python中创建2维数组,包括使用list创建二维数组及其潜在问题,以及使用NumPy模块高效创建数组。还涵盖了NumPy的内置函数如arange、linspace、zeros、ones、full、eye、diag以及random函数创建数组,并演示了reshape变换维数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考了:https://zhuanlan.zhihu.com/p/88197389

用list 创建2维数组

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

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

结果为:
[0]
[0, 0, 0]

利用这个重复特性,是否可以来创建一个二维数组呢?

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

但是,数据更新有问题

list_two[1][1]=10
print(list_two)
[[0, 10, 0], [0, 10, 0], [0, 10, 0]]

应该这样:

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

更新时:

list_three[1][1]=22
print(list_three)
[[0, 0, 0], [0, 22, 0], [0, 0, 0]]

用NumPy 模块创建数组

用Numpy 执行效率更改

import numpy as np
# 创建一维数组
nd_one = np.array([1, 2, 3])
# 创建二维数组
nd_two = np.array([[1, 2, 3], [4, 5, 6]])

print(nd_one)
[1 2 3]

print(nd_two)
[[1 2 3]
 [4 5 6]]

也可以这样

bb=np.array(np.mat('1 2; 3 4'))

print(bb)

输出为:

[[1 2]
 [3 4]]

运行:

arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])

print('5th element on 2nd dim: ', arr[1, 4])

结果为:
5th element on 2nd dim:  10

也可以更多维数组,比如3维

运行:

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

print(arr[0, 1, 2])

结果为:
6

使用 Numpy 的内置函数

使用arange 或 linspace 创建连续数组

# arange() 类似Python内置函数的 range()
# arange(初始值, 终值, 步长) 不包含终值
x0 = np.arange(1, 11, 2)
print(x0)

结果为:
[1 3 5 7 9]

# 创建一个 5x3 的数组
x1 = np.arange(15).reshape((5, 3))
print(x1)

结果为:
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]

运行

# linspace()线性等分向量
# linspace(初始值, 终值, 元素个数) 包含终值
x2 = np.linspace(1, 11, 6)
print(x2)

结果为:
[ 1.  3.  5.  7.  9. 11.]

使用 zeros(),ones(),full() 创建数组

# 创建一个 3x4 的数组且所有值全为 0
x3 = np.zeros((3, 4), dtype=int)
print(x3)

结果为:
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

# 创建一个 3x4 的数组且所有元素值全为 1
x4 = np.ones((3, 4), dtype=int)
print(x4)

结果为:
[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

# 创建一个 3x4 的数组,然后将所有元素的值填充为 2
x5 = np.full((3, 4), 2, dtype=int)
print(x5)

结果为:
[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

使用 eye() 创建单位矩阵

# 创建 3x3 的单位矩阵
x6 = np.eye(3, dtype=int)
print(x6)

结果为:
[[1 0 0]
 [0 1 0]
 [0 0 1]]

使用 diag() 创建对角矩阵

x7 = np.diag([1, 2, 3])
print(x7)

结果为:
[[1 0 0]
 [0 2 0]
 [0 0 3]]

使用 random 创建随机数组

# 创建一个值在 [0, 10) 区间的 3x3 的随机整数
x10 = np.random.randint(0, 10, (3, 3))
print(x10)

结果为:
[[6 4 7]
 [3 6 3]
 [5 2 6]]

使用 reshape变换维数

x11=np.arange(0,15)

x11
Out[65]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])

x11.reshape(3,5)
Out[66]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

介绍到此。

Python中,二数组通常以列表的形式存在,即列表中的每个元素也是一个列表。查询二数组的方法通常包括索引访问、切片操作、遍历以及使用内置函数等方式[^1]。 ### 1. 索引访问 二数组的每个子列表都可以通过索引进行访问。例如,访问二数组的第一个子列表中的第一个元素: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix[0][0]) # 输出 1 ``` ### 2. 切片操作 可以使用切片操作来获取二数组的某一部分。例如,获取二数组的前两行: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix[:2]) # 输出 [[1, 2, 3], [4, 5, 6]] ``` ### 3. 遍历二数组 可以通过嵌套的 `for` 循环来遍历二数组中的每一个元素。例如: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for row in matrix: for element in row: print(element) ``` ### 4. 使用内置函数 Python 提供了一些内置函数来处理二数组,例如 `len()` 函数可以获取二数组的行数和列数: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(len(matrix)) # 输出 3,表示有3行 print(len(matrix[0])) # 输出 3,表示第一行有3列 ``` ### 5. 查询特定元素 可以使用列表推导式或 `for` 循环来查询二数组中的特定元素。例如,查找所有大于5的元素: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] result = [element for row in matrix for element in row if element > 5] print(result) # 输出 [6, 7, 8, 9] ``` ### 6. 使用 NumPy 库 如果需要更高效的数组操作,可以使用 NumPy 库。NumPy 提供了多维数组对象 `ndarray`,可以方便地进行数组操作: ```python import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(matrix[0, 0]) # 输出 1 print(matrix[:2, :2]) # 输出 [[1 2], [4 5]] ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值