资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python函数求序列中位数,python求列表的中位数

python用户输入若干个整数,按降序打印输出在一行(使用空格间隔),并给出中位数?

# 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代码

使用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);

Python 通用的序列操作

序列 (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通用的序列操作有:索引、切片、乘法、成员资格检查、长度、最小值和最大值。

如何用python求list的中位数

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

2 如何用Python进行数据计算

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都是矩阵)

【python】在不排序的情况下求数组中的中位数?

题目:中位数就是一组数据从小到大排列后中间的那个数字。如果数组长度为偶数,那么中位数的值就是中间两个数字相加除以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://www.cdkjz.cn/article/hecscc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220