python中list、numpy、Matrix使用小结

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);

猜你喜欢

转载自blog.csdn.net/reasonyuanrobot/article/details/111175380