1. 程式人生 > >NumPy基礎練習(練一遍搞定NumPy)

NumPy基礎練習(練一遍搞定NumPy)

import numpy as np
import pandas as pd
from numpy import random
from numpy.random import randn

#######生成矩陣################

# #將列表放入Numpy陣列
# data=[2,3,4,5]
# arr=np.array(data)
# print(arr)

# #建立二維矩陣
# data=[[1,2,3],[7,8,9]]
# arr=np.array(data)
# print(arr)

# #輸出arr的資料型別
# data=[2,3,4,5]
# arr=np.array(data)
# print(arr.dtype)


#列印輸出8*4的二維矩陣
# a=np.empty([8,4])
# print(a)

# #輸出2*3*2的三維矩陣
# arr=np.empty([2,3,2])
# print(arr)


# #輸出2*4的矩陣
# a=np.empty([2,4])
# for i in range(2):
#     a[i]=i
# print(a)

# #輸出兩個2*4的矩陣
# a=np.empty([2,4])
# for i in range(2):
#     a[i]=i
#     print(a)

# #二維矩陣
# a=[[2,1,4,6]]
# print(a)

# #輸出2*2的矩陣,指定資料型別
# arr=np.array([2,2],dtype='int32')
# print(arr)


# #表示在【0-31】這32個數字中分成8行4列
# arr=np.arange(32).reshape((8,4))
# print(arr)

# #輸出 0-9
# print(np.arange(10))

# #在1和2之間(包括1和2)分成等值的3份輸出,結果:[ 1.   1.5  2. ]
# print(np.linspace(1,2,3))

# #輸出行列都為9的單位矩陣
# print(np.eye(9))

# #輸出全為0的一維矩陣
# print(np.zeros([3]))

# #輸出均為0的4維矩陣,引數分別為維度,即第一,二,三,四維
# print(np.zeros([2,2,2,2]))

# #分別輸出1.0,1.5,2.0
# for x in np.linspace(1,2,3):
#     print(x)

# #輸出2*4的二維矩陣
# print(np.random.rand(2,4))

##2*2的矩陣
# a=np.random.rand(4).reshape(2,2)
# print(a)

# #輸出1-10之間隨機的4個整數
# print(np.random.randint(1,10,4))

# ################索引和切片##########
# #輸出1,2
# arr=np.arange(10)
# print(arr[1:3])

# #將第5個到第7個改為12
# arr=np.arange(10)
# arr[5:8]=12
# print(arr)

# #將第5個數之後全都改成10
# arr=np.arange(10)
# arr[5:]=10
# print(arr)

# #將arr切分成二維矩陣看,將arr[6]改成1514
# arr=np.arange(10)
# a=arr[5:8]
# a[1]=1514
# print(arr)

# #想一下這個是什麼意思呢
# arr=np.arange(10)
# a=arr[5:8]
# a[:]=1514
# print(arr)

#copy和'='的區別
# arr=np.arange(10)
# print("arr:",arr)
# b=arr.copy()
# print("b.copy:",b)
# b[2]=100
# print("after change:",b)
# print("arr:",arr)

# arr=np.arange(10)
# print("arr:",arr)
# c=arr
# print("copy",c)
# c[2]=100
# print("after copy",c)
# print("arr:",arr)
#copy是複製一份,而'='是檢視


#[,]和[][]是相同的
# arr=np.array([[1,2,3],[4,5,6]])
# print(arr[1,1])
# print(arr[1][1])

#axis 0 1
#0表示從行看,1表示從列看

#二維切片索引

# #輸出第1行
# arr=np.arange(1,10).reshape(3,3)
# print(arr[:1])

# #輸出2,3行
# arr=np.arange(1,10).reshape(3,3)
# print(arr[1:])

# #輸出第一行第一個
# arr=np.arange(1,10).reshape(3,3)
# print(arr[:1,:1])

# #輸出所有行和2,3列
# arr=np.arange(1,10).reshape(3,3)
# print(arr[:,1:])

#規律:[:]指全部二維矩陣 [:2]指[0,2)的行


# print(np.zeros([3,3]))
# print(np.zeros([10]).max())
# print(np.empty([2,3,2],dtype='int32').max())
# print(np.arange(9).reshape(3,3)[:2,1:])
# a=np.arange(12).reshape([3,4])

# a=np.reshape(a,[4,3])
# print(a)

#############轉置############

#轉置,相乘
# t=np.arange(9).reshape([3,3]).T
# t1=np.arange(1,10,1).reshape([3,3])
# print(t.dot(t1))


#乘
# lst1=np.array([1,2,3,4])
# lst2=np.array([10,20,30,40])
# print(lst1.reshape([2,2]))
# print(np.dot(lst1,lst2))


#這兩個有什麼區別?
# b=np.random.random([1*2])#[ 0.6778996   0.29006868]
# print(b)
# b=np.random.random([1]*2)#[[ 0.09265586]]
# print(b)

##reshape中的引數是維度
# ar=np.arange(16).reshape([2,2,4])
# print(ar)
# c=np.arange(16).reshape([2,2,4])

#三維矩陣轉置
# c=np.arange(16).reshape([2,2,4])
# d=np.transpose(c,[1,0,2])
# e=c.T
# print(d)
# print(e)

# #矩陣橫向合併
# a1 = np.array([[1,2],[3,4]])
# a2 = np.array([[5,6],[7,8]])
# print(np.hstack([a1,a2]))

# #矩陣縱向合併
# a1 = np.array([[1,2],[3,4]])
# a2 = np.array([[5,6],[7,8]])
# print(np.vstack([a1,a2]))

############函式###########
# #取指數函式
# print(np.exp([3,1]))

# #接受兩個一維陣列,產生兩個二維矩陣
# points=np.arange(-5,5,1)
# xs,ys=np.meshgrid(points,points)
# print(xs)
# print(ys)

# ##where過濾條件
# #將正態分佈a中元素大於0的改成1,小於0的改成-1
# a=randn(9).reshape([3,3])
# print(a)
# print(np.where(a>0,1,-1))

#檔案儲存
# arr=np.arange(10)
# np.save('abc',arr)
# print(np.load('abc.npy'))
# a=np.arange(1,10).reshape([3,3])

#轉置和逆
# a=np.arange(10)
# b=a.T
# b=np.invert(a)#矩陣的逆

# #行相加,第二個等於第一個加第二個,依次類推
# a=np.array([[1,2,3],[4,5,6],[7,8,9]])
# print(a.cumsum(0))

# #列相加,第二個等於第一個加第二個,依次類推
# a=np.array([[1,2,3],[4,5,6],[7,8,9]])
# print(a.cumsum(0))

# #行累積
# a=np.array([[1,2,3],[4,5,6],[7,8,9]])
# print(a.cumprod(0))

# #列累積
# a=np.array([[1,2,3],[4,5,6],[7,8,9]])
# print(a.cumprod(1))


##按行排序,從左到右依次增大
# arr=randn(5,3)
# arr.sort(1)
# print(arr)


#隨機漫步
# nsteps=1000
# draws=np.random.randint(0,2,size=nsteps)
# steps=np.where(draws>0,1,-1)
# walk=steps.cumsum()
# print(walk)
#-----------------------------------------------------------

下面是一些函式: