list與array的相互轉(zhuǎn)換
list轉(zhuǎn)array:np.array()
>>>a = [1,2]
>>>np.array(a)
array([1,2])
array轉(zhuǎn)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:對應(yīng)元素相加
>>>a = np.array([1,2])
>>>b = np.array([3,4])
>>>a+b
array([4,6]) # 對應(yīng)元素相加
>>>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]
##執(zhí)行的不是加法爱榔,而是合并
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:對應(yīng)元素相乘(element-wise)
>>>a = np.array([1,2])
>>>b = np.array([3,4])
>>>a*b
array([3,8])
list:無法實現(xiàn)list與list相乘
>>>a = [1,2]
>>>b = [3,4]
>>>a*b
TypeError: can't multiply sequence by non-int of type 'list'
##對于list详幽,無法使用*實現(xiàn)對應(yīng)元素的乘法
2.2 array,list與數(shù)值相乘
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]