程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python數據分析】Numpy常用操作(一)

編輯:Python

一、導入Numpy

# 導入numpy
import numpy as np

二、一維和多維數組

1.創建數組(一維、多維)

# 創建數組 array
data1=[6,7,8]
np.array(data1) # 創建一維數組

array([6, 7, 8])

# 創建多維數組
data2=[1,2,3,4],[5,6,7,8]
arr1=np.array(data2)
print(arr1)

[[1 2 3 4]
[5 6 7 8]]

三.數據類型和類型轉換

#dtype 數據類型
arr1.dtype

dtype(‘int32’)

arr1.shape #shape屬性

(2, 4)

arr2=np.array(data2,dtype=np.int64)
print(arr2)
print(arr2.dtype)

[[1 2 3 4]
[5 6 7 8]]
int64

#float
data3=[6,7.5,8,9]
arr3=np.array(data3)
print(arr3)
print(arr3.dtype)

[6. 7.5 8. 9. ]
float64

# astype 類型轉換
arr3.astype(np.int64)

array([6, 7, 8, 9], dtype=int64)

# ones 生成全為1的數組
np.ones(10)

array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

#zeros 生成全為0的數組 
np.zeros(10)

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

# 生成多維數組,三行六列的數組
np.zeros((3,6))

array([[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])

三、數組和標量之間的運算

nd=np.array([1,2,3,4])
print(nd)

[1 2 3 4]

nd*2

array([2, 4, 6, 8])


nd*nd

array([ 1, 4, 9, 16])

nd+nd

array([2, 4, 6, 8])

#取倒數
1/nd

array([1. , 0.5 , 0.33333333, 0.25 ])

四、基本的索引和切片

# (1)arage方法:range函數的數組版
np.arange(10)

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

nd1=np.arange(1,10,2) #數組起始數值為1,重點為10,步長為2
print(nd1)

[1 3 5 7 9]

# (2)通過索引獲取部分元素
print(nd1[3])

7

print(nd1[2:5]) # 獲取到的索引為2,3,4,不包括5

[5 7 9]

# (3)通過索引賦值
nd1[2:5]=10
print(nd1)

[ 1 3 10 10 10]

# 多維數組
data2=[[1,2,3,4],[5,6,7,8]]
nd=np.array(data2)
print(nd)

[[1 2 3 4]
[5 6 7 8]]

nd[0] # 代表行索引,二維數組的第一行

array([1, 2, 3, 4])

nd[1]

array([5, 6, 7, 8])

nd[0,3] # 代表第一行,第四列的元素

4

五、花式索引

花式索引是一個Numpy術語,指的是利用整數數組進行索引

#(1)reshape
nd=np.arange(32)
print(nd)

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31]

# reshape
nd1=np.reshape(nd,(8,4))
print (nd1)

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]]

# 常規索引
nd1[0]

array([0, 1, 2, 3])

#(2)選取特定的行子集
# 花式索引,傳入一個數組
#獲取四行,每一個數字代表一行
nd1[[4,6,3,1]]

array([[16, 17, 18, 19],
[24, 25, 26, 27],
[12, 13, 14, 15],
[ 4, 5, 6, 7]])

nd1[[1,5,7,2]]

array([[ 4, 5, 6, 7],
[20, 21, 22, 23],
[28, 29, 30, 31],
[ 8, 9, 10, 11]])

#(3)選取多行、多列交叉處的元素
nd1[[1,5,7,2],[0,3,1,2]] # 第一個值為行索引為1,列索引為0的元素,後面以此類推。實際上獲取的是一些點

array([ 4, 23, 29, 10])

#(4)獲取矩形區域的兩種方法
#方法一:
nd1[[1,5,7,2]] [:,[0,3,1,2]]

array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]])

#方法二:np.ix_
nd1[np.ix_([1,5,7,2],[0,3,1,2])]

array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]])

六、通用函數 (ufunc)

# ufunc
arr=np.arange(10)
print(arr)

[0 1 2 3 4 5 6 7 8 9]

np.sqrt(arr) # 開根號

array([0. , 1. , 1.41421356, 1.73205081, 2. ,
2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ])

B=np.arange(3)
print(B)

[0 1 2]

C=np.array([2,-1,4])
print(C)

[ 2 -1 4]

np.add(B,C)

array([2, 0, 6])

#maximum
np.maximum(B,C) # 取B,C中同一個index中的最大值,

array([2, 1, 4])


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved