# coding=gbk
創新互聯專業為企業提供宜良網站建設、宜良做網站、宜良網站設計、宜良網站制作等企業網站建設、網頁設計與制作、宜良企業網站模板建站服務,10年宜良做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
import numpy as np
inputStr = input("請輸入多個整數,以空格分隔:")
# 使用列表推導式將輸入的內容以空格分隔,如果有小數,則通過int函數變為整數
input_lists = [int(num) for num in inputStr.split(" ")]
# 通過sort方法,并使用參數reverse=True,來將列表的數據以降序排列
input_lists.sort(reverse=True)
# 由于通過",".join()連接的列表不能有整數元素,所以通過列表推導式將列表每個元素通過str轉為字符串后,再聯接為以逗號分隔的字符串
print(",".join([str(num) for num in input_lists]))
# 使用numpy的median函數來得到中位數
print(np.median(input_lists))
使用python找到一列數的中位數并輸出的代碼示例如下,只有9行代碼:
import random;
N=9;lst=[
random.randint(0,100)
for i in range(N)];
lst.sort();
l=len(lst);
print("sorted:",lst);
print("median:",
sum(lst[((l-1)//2):(l//2+1)])/2);
序列 (sequence)是Python最基本的一種數據結構。
序列中的每個元素都有編號,即其位置或索引,其中第一個元素的索引為0,第二個元素的索引為1,依此類推。Python的序列索引支持負數,-1表示序列的最后一個元素,這是Python不同其他很多種語言不同的地方。
Python內置了多種序列,列表、元組、字符串是其中最常用的三種,本文為你描述各種序列的通用操作。
索引從0開始,索引號為0的元素為1,greeting的索引號為0的元素為'H'。
你可能注意到'Hello'和'H'都用單引號包圍,這是Python不同于其他語言的另一個地方。Python并沒有專門用于表示字符的數據類型,因此一個字符就是一個只包含一個元素的字符串。
Python的序列索引支持負數,-1表示倒數第一個元素。
切片 (slicing)操作用于訪問序列特定 范圍 內的元素。在一對方括號內使用兩個索引,并用冒號隔開:
注意到,返回的序列并未包含愿序列的第6個元素7,就相當于數學集合中的 左閉右開區間 操作。
換言之,你提供兩個索引來指定切片的邊界,其中第一個索引指定的元素包含在切片內,但第二個索引指定的元素不包含在切片內。
保留冒號,省略第一個索引,表示從序列起始位置開始切片;省略第二個索引,表示切片到序列末尾,包含最后一個元素:
這個操作的效果是:在指定的區間內間隔取元素,語法格式為:
例如:
步長為正數時,它從起點移到終點,而步長為負數時,它從終點移到起點。
可以使用加法運算(+運算符)拼接兩個序列:
從錯誤消息可知,不能拼接列表和字符串,雖然它們都是序列。一般而言,不能拼接不同類型的序列。
將序列與數x 相乘時,將重復這個序列x 次來創建一個新序列:
初始化一個長度為10的空列表:
成員資格檢查判定一個元素是否存在于集合中,如存在返回True,否則返回False,實際上是一個布爾表達式。
語法:
例如:
內置函數 len 返回序列包含的元素個數,而 min 和 max 分別返回序列中最小和最大的元素。
Python通用的序列操作有:索引、切片、乘法、成員資格檢查、長度、最小值和最大值。
def?median(lst):
if?not?lst:
return?
lst=sorted(lst)
if?len(lst)%2==1:
return?lst[len(lst)//2]
else:
return??(lst[len(lst)//2-1]+lst[len(lst//2])/2.0
numpy計算平均數 標準差 相關系數等基本知識
NumPy 是python 語言的一個第三方庫,其支持大量高維度數組與矩陣運算。此外,NumPy 也針對數組運算提供大量的數學函數。
#導入Numpy庫,并命名為np
import numpy as np
#創建一維數組
a = np.array([1, 2, 3])
# NumPy可以很方便地創建連續數組,比如我使用arange或linspace函數進行創建:
b = np.arange(1,5,1) // 返回一個有終點和起點、固定步長的排列,如起點是1,終點是4,步長為1,即【1,2,3,4】,
c = np.linspace(1,9,5) 返回一個有終點和起點、元素個數的的排列,如起點是1,終點是9,元素個數為5,即【1,3,5,7,9】
#通過NumPy可以自由地創建等差數組,同時也可以進行加、減、乘、除、求n次方和取余數。
求和:np.sum(a)
求取平均值:np.mean(a)
求取中位數:np.median(a)
求取加權平均數:np.average(a)
求取方差:var() np.var(a)
求取最小值:np.amin(a)
求取最大值:np.amax(a)
將兩個數相加:np.add(x1, x2)
將兩個數相減:np.subtract(x1, x2)
將兩個數相乘:np.multiply(x1, x2)
將兩個數相除:np.divide(x1, x2)
立方:np.power(x1, x2)
除余:np.remainder(x1, x2)
相關系數計算:np.corrcoef(a1, a2) (a1、a2都是矩陣)
題目:中位數就是一組數據從小到大排列后中間的那個數字。如果數組長度為偶數,那么中位數的值就是中間兩個數字相加除以2,如果數組長度為奇數,那么就是中間那個數。
分析:采用類快速排序的方法,把問題轉化為求一列數中第i小的數的問題,求中位數就是求一列數的第(len(arr)/2 + 1)小的數的問題)。
當使用依次類快速排序算法后,分割元素的下標為pos:
(1)當pos len(arr) / 2時,說明中位數在數組左半部分,在左半部分繼續查找。
(2)當pos == len(arr) / 2,說明找到中位數arr[pos]。
(3)當pos len(arr) / 2, 說明中位數在數組右半部分,在右半部分繼續查找。
以上默認此數組序列長度為奇數,如果為偶數就是調用上述方法兩次查找中間的兩個數,再求平均。
code:
def partition(arr, low, high):
key = arr[low]
while low high:
? ? while low high and arr[high] key:
? ? ? ? high -= 1
? ? arr[low] = arr[high]
? ? while low high and arr[low] key:
? ? ? ? low += 1
? ? arr[high] = arr[low]
arr[high] = arr[low]
arr[low] = key
pos = low
return pos
def getMid(arr):
low = 0
high = len(arr) - 1
mid = low + (high - low) 1
while low high:
? ? # 以arr[low] 為基準把數組分成兩部分
? ? pos = partition(arr, low, high)
? ? if pos == mid:? # 找到中位數
? ? ? ? break
? ? elif pos mid:? # 繼續在右半部分查找
? ? ? ? high = pos - 1
? ? else:? # 繼續在左半部分查找
? ? ? ? low = pos + 1
# 如果數組長度為奇數,中位數為中間的元素,否則就是中間兩個數的平均值
return arr[mid] if (len(arr) % 2) != 0 else (arr[mid] + arr[mid + 1]) / 2
if __name__ == "__main__":
arr = [7, 5, 3, 1, 2,? 11, 9]
print(getMid(arr))
程序的運行結果為:6
網頁名稱:python函數求序列中位數,python求列表的中位數
網頁路徑:http://vcdvsql.cn/article22/hecscc.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、手機網站建設、響應式網站、商城網站、建站公司、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯