numpy常用功能總結、python格式化輸入輸出


#coding:utf-8
#author:徐卜靈
#####################
#由於在各大公司筆試的時候總是會遇到一些格式化輸入輸出數據,今天就來總結一下。
#結合numpy來處理數據
#####################
###1.第一行輸入一個數n,之后輸入n個數,以空格隔開
# n = int(raw_input())
# L = [int(x) for x in raw_input().split(' ')]
# print n,L
#上下好像沒什么聯系

###############################################################
###2.第一行輸入一個數n,之后輸入n行,每行的數以空格隔開
# n = int(raw_input())
# L = [0] * n#這里一定要賦值為空
# for i in range(n):
#     L[i] = [int(x) for x in raw_input().split(' ')]
# print n,L
# print type(L[2][2])

####################################################################################################
#############################################numpy知識點詳解##########################################
import numpy as np
import matplotlib.pyplot as plt
##① numpy里的所有元素必須是形同類型的,每個數組都有一個shape,和一個dtype,也就是說numpy多維數組的固有的兩個屬性
# data  = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]#這里的data 是個list,下面一行代碼將list轉化為array
# arr0 = np.array(data)#這一行將list轉化為array
# print arr0.shape,arr0.dtype,arr0.ndim


##②創建制定形狀的全0和全1的array
# arr_all0 = np.zeros((3,5))#注意這里有兩個小括號
# arr_all1 = np.ones((3,5))
# arr_empty =np.empty((2,3,2))#這里可以嵌套,兩個二維數組,每個二維數組是2*3的。但empty返回的是未初始化的垃圾值,一般不用這個函數
# print arr_all0,'\n',arr_all1,'\n',arr_empty


# ##③np.arange,跟range(15)一樣的作用,注意兩者的type不一樣,不沒什么影響
# L1 =  np.arange(15)
# L2 = range(15)
# print L1,type(L1)#注意,沒有逗號分割 1 * 15
# print L2,type(L2)
# print np.eye(15)#創建一個正方形的單位陣,下同
# print np.identity(15)


# ##④dtype 可以直接修改數據類型
# arr1 = np.array([1,2,3],dtype=np.float32)
# arr2 = np.array([1.6,-2.3,3],dtype=np.int32)#小數部分被截斷,強制轉換的時候
# print arr1,arr1.dtype
# print arr2,arr2.dtype
# arr3 = np.array([1,2,3])
# arr3.astype('int32')#顯式修改類型
# print arr3.dtype

##5.數組和標量之間的運算
# arr = np.array([[1,2,3],[4,5,6]])
# print arr *  arr
# print 1.0/arr
# print arr  ** 0.5

##6.索引和切片
# arr = np.arange(10)
# print arr[5]
# print arr[7:9]
# arr[7:9] = 12#將索引為7,8的賦值為12
# print arr #這里arr也發生了變化
# print arr[:] #這里arr也發生了變化
# L = range(10)
# L[7:9] = 12,12
# print L
# #二維數組的索引和切片
# arr2d = np.array([[1,2,3],[2,3,4],[1,2,3],[4,5,6]])
# print arr2d[2]
# print arr2d[2,2],arr2d[2][2]#這兩種效果等價
# print arr2d[:2,1:]
# print arr2d[:,:1]#:選取整個軸
# data = np.random.rand(7,4)#利用python中numpy.random.randn()可以生成隨機數
# print data
# # numpy中有一些常用的用來產生隨機數的函數,randn()和rand()就屬於這其中。
# # numpy.random.randn(d0, d1, …, dn)是從標准正態分布中返回一個或多個樣本值。
# # numpy.random.rand(d0, d1, …, dn)的隨機樣本位於[0, 1)中。
#
# ##花式索引
# arrhua = np.zeros((8,4))
# for i in range(8):
#     arrhua[i] = i
# print arrhua,arrhua[[4,3,0,6]],arrhua[[-3,-5,-7]]


# ##7.reshape,square,sqre,exp
# arr = np.arange(32).reshape((8,4))
# print arr
# print arr.T
# print np.dot(arr.T,arr)#矩陣點乘
# print np.square(arr)
# print np.sqrt(arr)
# print np.exp(arr)
# x = np.random.randn(8)
# y = np.random.rand(8)
# # y = np.random(8)
# print np.maximum(x,y)
# z = np.random.rand(7)*5#這個乘以5很有意思哦
# print z
# #還有一些函數
# #abs,sqrt,square,exp,log,log10,log2,log1p,sign,ceil,floor,rint
# #isnan,isfinite,isinf,cos,cosh,sin,sinh,tan,tanh

###8.利用數組進行數據預處理
# points = np.arange(-5,5,0.01)#-5到5,間隔0.01取點
# xs,ys = np.meshgrid(points,points)
# #print xs,ys
# z = np.sqrt(xs**2+ys**2)
# plt.imshow(z,cmap = plt.cm.gray)
# plt.colorbar()
# plt.show()
###9.x if condition else y
# xarr = np.array([1.0,1.1,1.2,1.3,1.4])
# yarr = np.array([2.0,2.1,2.2,2.3,2.4])
# cond = np.array([True,False,True,False,True])
# result = [(x if c else y) for x,y,c in zip(xarr,yarr,cond) ]#有個zip,注意應用
# print result
#
# rr = np.where(cond,xarr,yarr)
# print rr
# arr = np.random.randn(4,4)
# print np.where(arr>0,5,-5)#大於0修改為5小於0修改為-5
# print np.where(arr>0,5,arr)#小於0不做處理

#10.數學和統計方法
#sum(0),mean(1),std(),var()標准差方差,min(),max(),argmin,argmax(),sumsum,cumprod后面倆比較不常用

# arr = np.random.randn(5,4)#后面是維度,正態分布的數據
# print arr.mean(),np.mean(arr),arr.sum()
# print arr.mean(axis=1),np.mean(arr),arr.sum(0)#0計算行,1計算列
# print arr.cumsum(0),arr.cumprod(1)#所有元素的累計和,累計積
#11.排序
# arr_sort = np.random.randn(9)
# arr_sort.sort()
# print arr_sort
# arr_sort = np.random.randn(3,2)
# arr_sort.sort(1)
# print arr_sort

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM