参考了: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]])
介绍到此。