注意datamat的型別是numpy中的陣列array,並不是列表(list)
**:print(datamat)
結果:[[ 3. 10. 1. ]
[ 1.1 1. 1. ]
[ 3. 8. 1. ]
[ 1.4 1.5 1.6]
[ 0.4 0.5 0.6]]
**:print(datamat[:2])
解釋[:2]表示取該矩陣內的前兩行
[[ 3. 10. 1. ]
[ 1.1 1. 1. ]]
** :print(datamat[:,2])
解釋[:2]表示取該矩陣內的第三列
結果:[1. 1. 1. 1.6 0.6]
** :print(datamat[2,:])
解釋[:2]表示取該矩陣內的第三行
結果:[3. 8. 1. ]
**:print(datamat[1:3,:])
結果[[1.1 1. 1. ]
[3. 8. 1. ]]
解釋:[1:3,:]表示取陣列(矩陣)的第1行第2行。
如果是陣列的話,比如data=[1,2,3]
print(data[:2])代表取前兩個資料
結果:[1, 2]
但是列表不能用[,n]來取第n列的資料
原因是因為在python中,普通的列表list和numpy中的陣列array是不一樣的,最大的不同是:乙個列表中可以存放不同型別的資料,包括int、float和str,甚至布林型;而乙個陣列中存放的資料型別必須全部相同,int或float。
在list中的資料型別儲存的是資料的存放的位址,簡單的說就是指標,並非資料,這樣儲存乙個list就太麻煩了,例如list1=[1,2,3,4]需要4個指標和四個資料,增加了儲存和消耗cpu,而array1=numpy.array([1,2,3,4])只需要存放四個資料,讀取和計算更加方便,因此在做純數字操作時,建議使用array。
也正因為列表可以存放不同型別的資料,因此列表中每個元素的大小可以相同,也可以不同,也就不支援一次性讀取一列,即使是對於標準的二維數字列表:
print(data[:,2])
typeerror: list indices must be integers or slices, not tuple
python 中的列表,陣列和矩陣
numpy使用ndarray物件來處理多維陣列,該物件是乙個快速而靈活的大資料容器。使用python列表可以儲存一維陣列,通過列表的巢狀可以實現多維陣列,那麼為什麼還需要使用numpy呢?numpy是專門針對陣列的操作和運算進行了設計,所以陣列的儲存效率和輸入輸出效能遠優於python中的巢狀列表,...
python的列表和元組 Python 列表和元組
lst1 中國 美國 日本 加拿大 lst2 中國 美國 日本 加拿大 lst1 1 2 美國 歐盟 print lst1 lst1 1 歐盟 print lst1 lst1 1 美國 歐盟 針對某一位列表元素,但賦值兩個字串,將以元組格式插入 print type lst1 1 print lst...
Python 多重列表解析裡for的順序
python 的列表解析list comprehension能讓語言更優雅,更可讀。多重列表解析可以將二維結構展平 flatten 比如有乙個二維陣列字典 data 想要拉伸成一維的線性結構,可以用二重迴圈方法 new for key in data forvalue in data key new...