python中list、numpy、Matrix使用小结

本文详细介绍了Python中列表和numpy数组的切片赋值、删除元素的方法,以及不同shape的数组操作。通过实例展示了如何利用切片对变量进行赋值,包括list和numpy array的转换及形状调整。同时,讨论了如何删除list中的元素,如pop、del和remove函数的用法。最后,强调了numpy数组在切片赋值时的注意事项,特别是对于不同shape的数组,行向量和列向量的处理方式。
param = [1,2,3,4,5,6,7,8,9,0]
a1,a2,a3,a4 = param[:4]
a5,a6,a7,a8= param[4:8]
print a1,a2,a3,a4
print a5,a6,a7,a8

- - (n,)array
param = np.array([1,2,3,4,5,6,7,8,9,0])
a1,a2,a3,a4 = param[:4]
a5,a6,a7,a8= param[4:8]
print a1,a2,a3,a4
print a5,a6,a7,a8

- - (n,1)、(n,m)array
param = param.reshape(len(param), 1)
a1,a2,a3,a4 = param[:4]  # 相当于按行切片赋值
a5,a6,a7,a8= param[4:8]
print a1,a2,a3,a4
print a5,a6,a7,a8

删除list中元素的三种方法

a.pop(index):删除列表a中index处的值,并且返回这个值.
del(a[index]):删除列表a中index处的值,无返回值. del中的index可以是切片,所以可以实现批量删除.
a.remove(value):删除列表a中第一个等于value的值,无返回.

e.g:
b = [1,2,3,4,5,6,7,8,9]
del(b[1:4])  //该方法不适用与numpy类型
b = [1,5,6,7,8,9]

关于切片赋值

- - list
param = [1,2,3,4,5,6,7,8,9,0]
a1,a2,a3,a4 = param[:4]
a5,a6,a7,a8= param[4:8]
print a1,a2,a3,a4
print a5,a6,a7,a8

- - (n,)array
param = np.array([1,2,3,4,5,6,7,8,9,0])
a1,a2,a3,a4 = param[:4]
a5,a6,a7,a8= param[4:8]
print a1,a2,a3,a4
print a5,a6,a7,a8

- - (n,1)、(n,m)array
param = param.reshape(len(param), 1)
a1,a2,a3,a4 = param[:4]  # 相当于按行切片赋值
a5,a6,a7,a8= param[4:8]
print a1,a2,a3,a4
print a5,a6,a7,a8

 

shape

param = param.reshape(len(param), 1)
a1,a2,a3,a4 = param[ :4,0]
a5,a6,a7,a8= param[4:8, 0]
print a1,a2,a3,a4
print a5,a6,a7,a8


shape为(n,)的array具有list、行向量、列向量性质;shape为(n,1)的array不具有list属性,需用双索引

# 
a = [1,2,3]
a_lis = [a,a,a]
a_arr = np.array(a_lis)
print a_arr[1]
print np.shape(a_arr)  # (3L, 3L)
print np.shape(a_arr[1])  # (3L,)

b,c,d = a_arr[1]  # 1 2 3
print b,c,d


# numpy、sympy

- arr = np.array([1,2,...,n])生成的数组,其维度不是(n,1),也不是(1,n),而是(n,); 可以当列向量用,也可以当行向量用,但是arr[i,0]这种双索引会报错,只能使用arr[i]此种单索引形式;
e.g:
b = [1,2,3,4,5,6,7,8,9]
b_arr = np.array(b)
print np.shape(b_arr)
b_arr = b_arr.reshape(np.shape(b_arr)[0], 1)
print np.shape(b_arr)

output:
(6L,)
(6L, 1L)

- Matrix([[1,2,...,n]]) 默认生成的是列向量, 其shape是(n,1);
- np.array(Matrix([[1,2,...,n]])) , 并不改变shape,其shape也是(n,1);

 

### 使用 NumPy 创建二维数组 NumPyPython 中用于科学计算的强大工具包,其中 `numpy.array` 函数是创建多维数组的主要方法。以下是几种常见的方式,展示如何利用 NumPy 创建二维数组。 #### 方法一:从嵌套列表创建二维数组 这是最常见的做法之一,即先定义一个嵌套列表,再将其转化为 NumPy 数组。 ```python import numpy as np nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 定义嵌套列表 arr = np.array(nested_list) # 转化为 NumPy 数组 print(arr) ``` 该方法适用于已知具体数据的情况,并能轻松地将现有数据结构转换为 NumPy 数组[^1]。 --- #### 方法二:使用内置函数生成固定模式的二维数组 NumPy 提供了许多便捷的函数来生成特定类型的二维数组,比如全零阵、全一阵或随机数矩阵等。 ##### 1. 全零阵 (`np.zeros`) 创建指定形状的全零二维数组: ```python zero_matrix = np.zeros((3, 4)) # 创建 3 行 4 列的全零矩阵,默认浮点型 print(zero_matrix) ``` 如果希望得到整数类型的数据,可以显式设置 `dtype` 参数: ```python zero_int_matrix = np.zeros((3, 4), dtype=int) print(zero_int_matrix) ``` ##### 2. 全一阵 (`np.ones`) 同理可创建全一是二维数组: ```python one_matrix = np.ones((2, 5), dtype=float) # 创建 2 行 5 列的全一矩阵 print(one_matrix) ``` ##### 3. 自定义值填充 (`np.full`) 当需要整个数组都填充值时,可以用 `np.full`: ```python filled_matrix = np.full((3, 3), fill_value=7, dtype=int) # 填充值为 7 的 3×3 整形矩阵 print(filled_matrix) ``` ##### 4. 随机数矩阵 (`np.random.rand`) 有时也需要生成含有随机数的二维数组: ```python random_matrix = np.random.rand(2, 3) # 创建 2 行 3 列介于 [0, 1) 的均匀分布随机数矩阵 print(random_matrix) ``` --- #### 方法三:通过序列生成器构造二维数组 除了直接赋值外,也可以借助 NumPy 的序列生成器动态构建二维数组。 ##### 1. 使用 `arange` 和重塑 (`reshape`) 组合 `arange` 可以生成一系列连续数字,随后通过 `reshape` 改变其维度形成目标二维数组。 ```python sequence_arr = np.arange(1, 10).reshape(3, 3) # 生成从 1 至 9 并调整为 3×3 形状 print(sequence_arr) ``` ##### 2. 使用 `linspace` 若需在一定范围内均分若干点构成二维数组,则可用 `linspace`: ```python linear_space_arr = np.linspace(0, 1, 12).reshape(3, 4) # 在 [0, 1] 上取 12 点并转为 3×4 矩阵 print(linear_space_arr) ``` --- ### 总结 - 若要快速初始化带有预设值(如零、一或其他常量)的大规模二维数组,推荐使用 `np.zeros`、`np.ones` 或者 `np.full`。 - 对于需要精确控制元素排列顺序的情形下,可通过组合 `arange` 和 `reshape` 实现复杂布局设计。 - 若涉及概率统计模拟实验等相关领域工作,则考虑运用 `np.random.*` 系列命令生成相应随机样本集合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值