list与array的相互转换
list转array:np.array()
>>>a = [1,2]
>>>np.array(a)
array([1,2])
array转list:[]
>>>a = np.array([1,2])
>>>list(a)
[1,2]
>>>a = np.array([[1,2],[3,4]]) ## 二维array
>>>list(a)
[array([1,2]),array([3,4])]
1. 加法 “+”
np.array:对应元素相加
>>>a = np.array([1,2])
>>>b = np.array([3,4])
>>>a+b
array([4,6]) # 对应元素相加
>>>c = np.array([1])
>>>a+c
array([2,3])
# 由于c只有一个元素,长度与a不同,将c这一个元素broadcast到与a相同的长度
# 实际上是np.array([1,2])+np.array([1,1]) = np.array([2,3])
# 这种broadcast只适用于一个元素的array
>>>d = np.array([1,2,3])
>>>a+d
# ValueError: operands could not be broadcast together with shapes (3) (2)
# d 长度为3, a长度为2,虽然长度不同,也无法进行broadcast
list:扩展,类似于extend
>>>a = [1,2]
>>>b = [3,4]
>>>a+b
[1,2,3,4]
##执行的不是加法,而是合并
list 加法的操作类似于extend
>>>a.extend(b)
>>>a ### extend 操作是将b并到a中,改变的是a , 没有返回值
[1,2,3,4]
>>>c = a.extend(b)
>>>c
##空白(没有返回值)
2.乘法“*”
2.1 array与array相乘,list与list相乘
np.array:对应元素相乘(element-wise)
>>>a = np.array([1,2])
>>>b = np.array([3,4])
>>>a*b
array([3,8])
list:无法实现list与list相乘
>>>a = [1,2]
>>>b = [3,4]
>>>a*b
TypeError: can't multiply sequence by non-int of type 'list'
##对于list,无法使用*实现对应元素的乘法
2.2 array,list与数值相乘
array:与array中每个元素相乘
>>>2*np.array([1,2])
array([2,4])
list:扩展
>>>2*[1,2]
[1,2,1,2]
3. 索引
np.array:切片索引&整型索引
>>>a = np.array([[1,2],[3,4]])
array([[1,2],
[3,4]])
>>>a[:2,0]
array([1,3]) # 第一个:2代表的是行,代表了前两行;第二个0代表的是第一列
>>>a[:2][0] # a[:2] ==> array([[1,2],[3,4]]);所以a[:2][0]==>array([1,2])
array([1,2]) ## 分成了两个步骤
对于list 它是一维的
因此:
>>>a = [1,2]
>>>a[0]
1
>>>a[-1]
2
>>>a[:2]
[1,2]