# 引入numpy 重新命名為np
import numpy as np
# 生成乙個numpy中的一維陣列
# numpy中的陣列,儲存的所有資料必須是同質(相同型別)的
a_arr = np.arange(10)
b_arr = np.arange(10)
# 直接使用陣列做向量運算的,會把運算作用到陣列中的每乙個元素中
c_arr = a_arr * b_arr
# 建立資料的幾種方式
# 隨機產生乙個指定維度的隨機數陣列
# 1.維度數 2.各維度大小
data = np.random.rand(2,3)
print(data)
print('維度個數',data.ndim)
print('各維度大小',data.shape)
print('資料型別',data.dtype)
# python中列表轉換numpy中的陣列
list1 = range(10)
print(type(list1))
# 轉換為陣列
arr = np.array(list1)
print(type(arr))
# 巢狀列表轉換為ndarray
list2 = [range(10),range(10,20)]
type: class 'list'
[range(0, 10), range(10, 20)]
arr = np.array(list2)
type: class 'numpy.ndarray'
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
# zeros() \ ones() \ empty()函式 建立陣列
# 使用zeros()建立指定維度,指定資料型別的陣列
# 1.維度資訊 2.指定型別
# 如果不指定資料型別,預設全部是0.的float64的資料
zeros_arr = np.zeros((2,3),np.int32)
# 使用ones()函式建立指定維度,指定資料類的陣列
# 不指定資料型別,預設是全部為1的float64型別的資料
ones_arr = np.ones((2,3),np.int32)
# 使用empty()函式建立指定為度的陣列
# 不指定資料型別,預設為全部為1的float64的資料
empty_arr = np.empty((2,3))
# 如果想要乙個空字串的陣列,可以指定資料型別為np.str
empty_arr_str = np.empty((2,3),np.str)
# 建立對角線資料全部為1的陣列 數字是幾就是有幾行
identity_arr = np.identity(3,dtype=np.int64)
# 資料型別
# 建立乙個陣列,指定資料型別
zeros_arr = np.zeros((3,3),np.int64)
# astype()函式,轉換陣列中的資料型別
zeros_float_arr = zeros_arr.astype(np.float64)
# 儲存資料為小數型別,轉換為整數型別
data_arr = np.array([1.45,2.34,3.14,4.6,6.6,7.8])
# 將float64資料型別轉換為整數int64型別,只保留整數部分
int_data_arr = data_arr.astype(np.int64)
# 陣列的運算
arr = np.array([[1,2,3],[4,5,6]])
arr2 = np.array([[4,5,6],[7,8,9]])
# 乘法運算 會把運算作用陣列中的每乙個元素中 arr*3
# 乘方 arr**2
# 矩陣(陣列)加減乘除運算 arr+arr arr-arr2 arr/arr2 arr*arr2
# 條件索引
year_arr = np.array([
[2000,2013,2015],
[2008,2019,2007],
[2010,2012,2017]
])# 篩選出大於等於2015的年份
is_year_after = year_arr >= 2015
print(is_year_after)
# 根據篩選的結果布林資料取出資料
filter_year = year_arr[is_year_after]
# 等同於上面的寫法
filter_year = year_arr[year_arr>=2015]
# 多個條件同時成立
filter_year = year_arr[(year_arr>=2007)&(year_arr%4==0)]
# 多個條件有乙個成立即可 | 或者
filter_year = year_arr[(year_arr>=2007)|(year_arr%2==0)]
# 陣列的切片
arr = np.arange(10)
# 資料中的索引從0開始,依次+1
# 切片
print(arr[2::3]) 從索引2開始隔三個數取數
# reshape()把一維陣列轉換為多維陣列
# 轉換之後的資料總個數必須等於轉換之前的個數
arr2 = np.arange(12).reshape(3,4)
# 多維陣列通過組合索引取值
print(arr2[1,1])
# 切片
print(arr2[0:2])
print(arr2[0:2,2:])
print(arr2[:,1:3])
# 陣列的轉置
arr3 = np.random.rand(2,3)
arr4 = arr3.transpose()
arr5 = arr4.reshape(6)
import numpy as np
# 隨機生成乙個二維陣列
arr = np.random.rand(2,3)
# 向上取整 np.ceil(arr)
# 向下取整 np.floor(arr)
# 四捨五入 np.rint(arr)
# 判斷陣列中的元素是否為空 nan np.isnan(arr)
# 讓陣列中的元素相乘
arr1 = np.arange(10).reshape(5,2)
arr2 = np.array([
[5,2],
[2,5],
[3,4],
[1,2],
[3,7]
print(arr1*arr2) print(np.multiply(arr1,arr2))
# 相除
print(np.divide(arr1,arr2。astype(np.float64)))
# 常用的統計函式
arr = np.arange(10).reshape(5,2)
# 相加 print(np.sum(arr))
# 計算平均數 print(np.mean(arr))
# 最大值 print(np.max(arr))
# 最小值 print(np.min(arr))
# 方差 print(np.var(arr))
# 標準差 print(np.std(arr))
# 最大值的下標(索引) print(np.argmax(arr))
# 最小值的下標(索引) print(np.argmin(arr))
# 累加計算 print(np.cumsum(arr))
# 累乘 print(np.cumprod(arr))
# where() 函式
arr = np.random.rand(2,3)
# 更改陣列中的資料
arr[0,1] = 1
# where()函式
# 1.條件 2.條件成立時取得資料 3.條件不成立時 取得資料
print(np.where(arr>0.5,1,0))
# any()函式 表示陣列中至少有乙個符合條件的元素,返回true,否則返回false
print(np.any(arr>=1))
# all()函式 表示陣列中的元素必須全部符合條件時,返回true,否則返回false
print(np.all(arr>=0.5))
# unique() 返回陣列中的唯一值,返回乙個排好序的一維陣列
arr1 = np.array([[4,6,3],[1,2,3],[4,5,6]])
print(np.unique(arr1))
Numpy基本用法 ndarray的資料型別
print 生成指定元素型別的陣列 設定dtype屬性 x numpy.array 1,2.6,3 dtype numpy.int64 print x 元素型別為int64 print x.dtype x numpy.array 1,2,3 dtype numpy.float64 print x 元...
Python基礎之Numpy的基本用法詳解
a np.array 1,2,3,4,5,6,7,8,9,10,11 一維陣列 b np.array 1,2 3,4 二維陣列 numpy.arange start,stop,step,dtype start預設0,step預設1 c np.arange 0,10,1,dtype int np.ar...
python系列 numpy中的tile函式
在看機器學習實戰這本書時,遇到numpy.tile a,b 函式,愣是沒看懂怎麼回事,裝了numpy模組後,實驗了幾把,原來是這樣子 重複a,b次,這裡的b可以時int型別也可以是遠組型別。python view plain copy import numpy numpy.tile 0,0 5 在列...