精华内容
下载资源
问答
  • 2021-01-29 04:53:38

    中位数:中位数是一组数字中的中间数。此代码计算包含数字的列表的中位数:

    我们定义一个数字列表并计算列表的长度。要查找中位数,我们首先使用sort()函数按升序排序列表。

    现在我们通过检查剩余数量来检查数字是偶数还是奇数。如果数字是偶数,我们在列表中找到2个中间元素并获得它们的平均值以将其打印出来。但如果数字是奇数,我们在列表中找到中间元素并将其打印出来。

    # Python program to print

    # median of elements

    # list of elements to calculate median

    n_num = [1, 2, 3, 4, 5]

    n = len(n_num)

    n_num.sort()

    if n % 2 == 0:

    median1 = n_num[n//2]

    median2 = n_num[n//2 - 1]

    median = (median1 + median2)/2

    else:

    median = n_num[n//2]

    print("Median is: " + str(median))

    输出:Median is: 3

    更多相关内容
  • 在Python中查找列表的中位数

    千次阅读 2020-12-28 21:56:55
    Python 3.4有statistics.median :返回数字数据的中位数(中间值)。当数据点数为奇数时,返回中间数据点。 当数据点的数量是偶数时,通过取两个中间值的平均值来插值中值:>>> median([1, 3, 5]) 3 >>...

    Python 3.4有statistics.median :

    返回数字数据的中位数(中间值)。

    当数据点数为奇数时,返回中间数据点。 当数据点的数量是偶数时,通过取两个中间值的平均值来插值中值:

    >>> median([1, 3, 5]) 3 >>> median([1, 3, 5, 7]) 4.0

    用法:

    import statistics items = [1, 2, 3, 6, 8] statistics.median(items) #>>> 3

    types也很小心:

    statistics.median(map(float, items)) #>>> 3.0 from decimal import Decimal statistics.median(map(Decimal, items)) #>>> Decimal('3')

    对于python-2.x :

    使用numpy.median()来创build一个单行的函数:

    >>> from numpy import median >>> median([1, -4, -1, -1, 1, -3]) -1.0

    或者, 写一个函数 :

    def median(lst): n = len(lst) if n < 1: return None if n % 2 == 1: return sorted(lst)[n//2] else: return sum(sorted(lst)[n//2-1:n//2+1])/2.0

    >>> median([-5, -5, -3, -4, 0, -1]) -3.5

    对于python-3.x ,使用statistics.median :

    >>> from statistics import median >>> median([5, 2, 3, 8, 9, -2]) 4.0

    sorted()函数对此非常有帮助。 使用sorting后的函数对列表进行sorting,然后简单地返回中间值(或者如果列表中包含偶数个元素,则平均中间两个值)。

    def median(lst): sortedLst = sorted(lst) lstLen = len(lst) index = (lstLen - 1) // 2 if (lstLen % 2): return sortedLst[index] else: return (sortedLst[index] + sortedLst[index + 1])/2.0

    这是一个更清洁的解决scheme

    def median(lst): quotient, remainder = divmod(len(lst), 2) if remainder: return sorted(lst)[quotient] return sum(sorted(lst)[quotient - 1:quotient + 1]) / 2.

    注意:答案已更改,以在意见中joinbuild议。

    如果需要更快的平均运行时间,您可以尝试快速selectalgorithm。 QuickSelect的平均(和最好)的情况下性能O(n) ,虽然它可以在糟糕的一天结束O(n²) 。

    这是一个随机select的支点的实现:

    import random def select_nth(n, items): pivot = random.choice(items) lesser = [item for item in items if item < pivot] if len(lesser) > n: return select_nth(n, lesser) n -= len(lesser) numequal = items.count(pivot) if numequal > n: return pivot n -= numequal greater = [item for item in items if item > pivot] return select_nth(n, greater)

    你可以简单地把它变成一个find中位数的方法:

    def median(items): if len(items) % 2: return select_nth(len(items)//2, items) else: left = select_nth((len(items)-1) // 2, items) right = select_nth((len(items)+1) // 2, items) return (left + right) / 2

    这是非常优化的,但即使是优化的版本也不可能超过Tim Sort(CPython的内置sort ),因为这非常快 。 我已经尝试过,我输了。

    您可以使用list.sort来避免创build新的列表,并对列表进行sorted和sorting。

    你也不应该使用list作为variables名,因为它会影响python自己的列表 。

    def median(l): half = len(l) // 2 l.sort() if not len(l) % 2: return (l[half - 1] + l[half]) / 2.0 return l[half]

    def median(array): """Calculate median of the given list. """ # TODO: use statistics.median in Python 3 array = sorted(array) half, odd = divmod(len(array), 2) if odd: return array[half] return (array[half - 1] + array[half]) / 2.0

    在这里,我在Codecademy的这个练习中提出:

    def median(data): new_list = sorted(data) if len(new_list)%2 > 0: return new_list[len(new_list)/2] elif len(new_list)%2 == 0: return (new_list[(len(new_list)/2)] + new_list[(len(new_list)/2)-1]) /2.0 print median([1,2,3,4,5,9])

    中值函数

    def median(midlist): midlist.sort() lens = len(midlist) if lens % 2 != 0: midl = (lens / 2) res = midlist[midl] else: odd = (lens / 2) -1 ev = (lens / 2) res = float(midlist[odd] + midlist[ev]) / float(2) return res

    我为数字列表定义了一个中值函数

    def median(numbers): return (sorted(numbers)[int(round((len(numbers) - 1) / 2.0))] + sorted(numbers)[int(round((len(numbers) - 1) // 2.0))]) / 2.0

    我在Python中实现了“median of median”algorithm ,这比使用sort()要快一些。 我的解决scheme使用每列15个数字,速度约为5N,比使用每列5个数字的速度约为10N还要快。 最佳速度是~4N,但我可能是错的。

    按照Tom的要求,我在这里添加了我的代码,以供参考。 我相信速度的关键部分是每列使用15个数字,而不是5个。

    #!/bin/pypy # # TH @stackoverflow, 2016-01-20, linear time "median of medians" algorithm # import sys, random items_per_column = 15 def find_i_th_smallest( A, i ): t = len(A) if(t <= items_per_column): # if A is a small list with less than items_per_column items, then: # # 1. do sort on A # 2. find i-th smallest item of A # return sorted(A)[i] else: # 1. partition A into columns of k items each. k is odd, say 5. # 2. find the median of every column # 3. put all medians in a new list, say, B # B = [ find_i_th_smallest(k, (len(k) - 1)/2) for k in [A[j:(j + items_per_column)] for j in range(0,len(A),items_per_column)]] # 4. find M, the median of B # M = find_i_th_smallest(B, (len(B) - 1)/2) # 5. split A into 3 parts by M, { < M }, { == M }, and { > M } # 6. find which above set has A's i-th smallest, recursively. # P1 = [ j for j in A if j < M ] if(i < len(P1)): return find_i_th_smallest( P1, i) P3 = [ j for j in A if j > M ] L3 = len(P3) if(i < (t - L3)): return M return find_i_th_smallest( P3, i - (t - L3)) # How many numbers should be randomly generated for testing? # number_of_numbers = int(sys.argv[1]) # create a list of random positive integers # L = [ random.randint(0, number_of_numbers) for i in range(0, number_of_numbers) ] # Show the original list # # print L # This is for validation # # print sorted(L)[int((len(L) - 1)/2)] # This is the result of the "median of medians" function. # Its result should be the same as the above. # print find_i_th_smallest( L, (len(L) - 1) / 2)

    我有一些浮点值列表的问题。 我最终使用python3 statistics.median中的代码片段,并且正在使用没有导入的float值完美工作。 资源

    def calculateMedian(list): data = sorted(list) n = len(data) if n == 0: return None if n % 2 == 1: return data[n // 2] else: i = n // 2 return (data[i - 1] + data[i]) / 2

    这是繁琐的方法来find中位数而不使用中median函数:

    def median(*arg): order(arg) numArg = len(arg) half = int(numArg/2) if numArg/2 ==half: print((arg[half-1]+arg[half])/2) else: print(int(arg[half])) def order(tup): ordered = [tup[i] for i in range(len(tup))] test(ordered) while(test(ordered)): test(ordered) print(ordered) def test(ordered): whileloop = 0 for i in range(len(ordered)-1): print(i) if (ordered[i]>ordered[i+1]): print(str(ordered[i]) + ' is greater than ' + str(ordered[i+1])) original = ordered[i+1] ordered[i+1]=ordered[i] ordered[i]=original whileloop = 1 #run the loop again if you had to switch values return whileloop

    展开全文
  • Python如何获取列表(List)的中位数

    千次阅读 2020-12-28 21:57:00
    如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数。在这个任务里,你将得到一个含有自然数的非空数组(X)。你...

    前言

    中位数是一个可将数值集合划分为相等的上下两部分的一个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数。在这个任务里,你将得到一个含有自然数的非空数组(X)。你必须把它分成上下两部分,找到中位数。

    输入: 一个作为数组的整数(int)列表(list)的。

    输出: 数组的中位数(int, float).

    示例

    get_median([1, 2, 3, 4, 5]) == 3

    get_median([3, 1, 2, 5, 3]) == 3

    get_median([1, 300, 2, 200, 1]) == 2

    get_median([3, 6, 20, 99, 10, 15]) == 12.5

    如何使用:中位数在概率论和统计学中得到应用,它偏态分布中有显著的价值。例如:我们想从一组数据中知道人们的平均财富 -- 100人一个月收入100美元,10人一个月收入1,000,000美元。如果我们算平均值,得到的是91000美元。这是一个完全没有向我们展示真实情况的奇怪的值。所以在这种情况下,中位数会给我们更有用的值和较好的描述。

    前提:1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data)

    普通方法:

    对列表进行排序,针对列表长度是奇数还是偶数的不同情况,计算中位数。

    def get_median(data):

    data = sorted(data)

    size = len(data)

    if size % 2 == 0: # 判断列表长度为偶数

    median = (data[size//2]+data[size//2-1])/2

    data[0] = median

    if size % 2 == 1: # 判断列表长度为奇数

    median = data[(size-1)//2]

    data[0] = median

    return data[0]

    最佳方法:

    这个解决方法非常巧妙,它利用了取反数和为1的特性,通过列表负索引来获得列表中位数。

    对 return (data[half] + data[~half]) / 2的解释:

    排序后得到序列[1,2,3,4,5,6],其列表长度为偶数,中位数由列表中间两位元素3(索引为2),4(索引为3)决定。而元素4的负索引为-3,正好是索引2的取反数。

    排序后得到序列[1,2,3,4,5],其列表长度为奇数,中位数由列表中间元素3(索引为2,负索引为-3)决定。仍然符合代码。

    def get_median(data):

    data.sort()

    half = len(data) // 2

    return (data[half] + data[~half]) / 2

    更多Python如何获取列表(List)的中位数相关文章请关注PHP中文网!

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数。在这个任务里,你将得到一个含有自然数的非空数组(X)。你...

    前言

    中位数是一个可将数值集合划分为相等的上下两部分的一个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数。在这个任务里,你将得到一个含有自然数的非空数组(X)。你必须把它分成上下两部分,找到中位数。

    输入: 一个作为数组的整数(int)列表(list)的。

    输出: 数组的中位数(int, float).

    示例

    get_median([1, 2, 3, 4, 5]) == 3

    get_median([3, 1, 2, 5, 3]) == 3

    get_median([1, 300, 2, 200, 1]) == 2

    get_median([3, 6, 20, 99, 10, 15]) == 12.5

    如何使用:中位数在概率论和统计学中得到应用,它偏态分布中有显著的价值。例如:我们想从一组数据中知道人们的平均财富 -- 100人一个月收入100美元,10人一个月收入1,000,000美元。如果我们算平均值,得到的是91000美元。这是一个完全没有向我们展示真实情况的奇怪的值。所以在这种情况下,中位数会给我们更有用的值和较好的描述。

    前提:1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data)

    普通方法:

    对列表进行排序,针对列表长度是奇数还是偶数的不同情况,计算中位数。

    def get_median(data):

    data = sorted(data)

    size = len(data)

    if size % 2 == 0: # 判断列表长度为偶数

    median = (data[size//2]+data[size//2-1])/2

    data[0] = median

    if size % 2 == 1: # 判断列表长度为奇数

    median = data[(size-1)//2]

    data[0] = median

    return data[0]

    最佳方法:

    这个解决方法非常巧妙,它利用了取反数和为1的特性,通过列表负索引来获得列表中位数。

    对 return (data[half] + data[~half]) / 2的解释:

    e42c601fcfea92ff617541f8399a17ca.png

    排序后得到序列[1,2,3,4,5,6],其列表长度为偶数,中位数由列表中间两位元素3(索引为2),4(索引为3)决定。而元素4的负索引为-3,正好是索引2的取反数。

    排序后得到序列[1,2,3,4,5],其列表长度为奇数,中位数由列表中间元素3(索引为2,负索引为-3)决定。仍然符合代码。

    def get_median(data):

    data.sort()

    half = len(data) // 2

    return (data[half] + data[~half]) / 2

    总结

    以上就是Python实现获取列表的中位数的全部内容,希望本文的内容对大家学习python能有所帮助。

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • 中位数定理

    千次阅读 2021-01-10 19:03:22
    中位数是数列中间的那个数,或者是中间的那两个数之一。 题目链接:AcWing 104. 货仓选址 代码实现: #include <iostream> #include <algorithm> using namespace std; const int maxn = 1e5 + 10; ...
  • MATLAB如何使用median函数计算样本的中位数【语法说明】M=median(A):如果A是向量,函数求向量的中位数;...将向量按大小顺序排列起来,位于中间位置的那个数据就是向量的中位数。在数列中出现了极端变量值...
  • java 计算中位数的实现方法

    千次阅读 2021-03-13 23:47:47
    最近工作需要 要求把python的代码写成java版本,python中有一个np.median()求中位数的方法,java决定手写一个先说说什么是中位数中位数就是中间的那个数,如果一个集合是奇数个,那么中位数就是按大小排列后,最...
  • bfptr算法(即中位数中位数算法)

    万次阅读 多人点赞 2018-08-25 22:35:16
    BFPRT算法是解决从n个数中选择第k大或第k小的这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法。 一 ...
  • Java||求集合数组中的中位数

    千次阅读 2019-08-03 22:05:44
    简单解释就是最中间的那个数,如果集合是奇数个,则中位数是按大小排列最中间那个数,如果集合是偶数个,则中位数就是按大小排列最中间那两个数的平均数。 求解: 先判断这个集合是奇数还是偶数,如果是奇数那么...
  • 数值型数组的中位数是在数据排序后位于数组中间项的值。如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80...
  • JAVA求数组的平均数,众数,中位数

    千次阅读 2021-07-03 13:55:48
    中位数中位数是指把一组数据从小到大排列,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数。 众数:众数是指一组数据中出现...
  • 1.求一个序列的中位数(c++)

    千次阅读 2019-07-12 02:45:36
    2、能够得到这个序列的中位数 中位数定义: #1.如果元素个数是偶数,返回已排序序列最中间的两个数字的平均数 #2.如果元素个数是奇数,返回已排序序列中间那个数 二、分析 能够看到该题的标记是hard,显...
  • java 计算中位数方法

    万次阅读 2019-01-04 15:51:14
    中位数就是中间的那个数, 如果一个集合是奇数个,那么中位数就是按大小排列后,最中间那个数, 如果一个集合是偶数个,那么中位数就是按大小排列后,最中间那2个数的平均数。 比如: 1,2,3,4,5 那中位数...
  • python求解中位数、均值、众数

    万次阅读 2019-02-16 11:19:19
    首先定义一个数据,在这里我假定为: num=[2,3,2,5,1,0,1,2,9] 一、求中位数  中位数(又称中值,英语:Median),统计学中的专有名词...如果观察值有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数...
  • 程序设计-求N个数的中位数(C++)

    万次阅读 2019-02-28 10:19:02
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!... /* * 求n个数的中位数 - C++ - by Chimomo ... * 计算有限个数的数据的中位数的方法是:把所有的同类...
  • 利用SQL求中位数(已修复BUG)

    万次阅读 热门讨论 2019-09-18 16:48:36
    中位数是指将集合中的元素按照升序排序后恰好位于正中间的元素。如果元素个数是偶数,则取中间两个元素的平均值作为中位数。 那么如何利用SQL求中位数呢? 将集合的元素按照大小分为上半部分和下半部分两个子集...
  • 寻找两个有序数组的中位数

    千次阅读 2019-02-17 13:13:06
    请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例: A = [1, 3] B = [2] 则中位数是 2.0 A = [1, 2] B = [3, 4] 则中位数是 (2 + 3...
  • 中位数的位置:当样本数为奇数时中位数是指将数据按大小顺序排列起来,形成一个数列,居于数列中间位置的那个数据。中位数用Me表示。从中位数的定义可知,所研究的数据中有一半小于中位数,一半大于中位数中位数的...
  • 从海量数据中找出中位数

    千次阅读 2020-03-14 18:51:32
    关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N...
  • Java实现 LeetCode 4 寻找两个有序数组的中位数

    万次阅读 多人点赞 2020-02-11 18:54:06
    寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: ...
  • rstudio中位数的公式In this tutorial, let’s learn how we can find the median in R. Median is defined as the measurement of central tendency in the data. In simpler terms, you may call it the ‘middle...
  • 文章目录算数平均数、中位数、众数和几何平均数 算数平均数、中位数、众数和几何平均数 统计数据时经常用到的几种数的比较: ...中位数是按顺序排列的一组数据中居于中间位置的数,即在这组数据中,有一半的...
  • 一组数据中如果有特别大的数或特别小的数时,一般用中位数 一组数据比较多(20个以上),范围比较集中,一般用众数 其余情况一般还是平均数比较精确 一、联系与区别:  1、平均数是通过计算得到的,因此它会因...
  • SQL 如何计算每个分组的中位数

    千次阅读 2020-06-15 14:31:49
    中位数是指一组数据排序以后,位于中间位置的数据值。如果数据个数是奇数,中位数就是最中间位置那个值;如果是偶数,则是中间位置那两个数的平均值。 怎么查询出数据分组以后每个组的中位数呢? 用SQL来解决这个...
  • SQL笔面试题:如何求取中位数

    千次阅读 2021-08-19 00:32:34
    公众号后台回复“图书“,了解更多号主新书内容 作者:胖里 来源: 胖里的日常 先来看看中位数的概念。中位数(Median)又称中值,统计学中的专有名词,是按顺序排...
  • 求无序数组的中位数

    千次阅读 2018-10-02 21:35:01
    求无序数组的中位数,我们首先想到的是将该数组进行排序,然后找到中间的元素,但是往往面试的时候,面试官就会怼你,说你时间复杂度太高了....要你优化(个人感觉,面试官对你问了问题,有一个自己的标准,如果你答...
  • public int midNum(int a,int b,int c){ int mid = Math.max(a,b) > c ? Math.max(Math.min(a,b),c) : Math.min(Math.max(a,b),c); return mid; }
  • 中位数

    千次阅读 2015-10-11 18:07:50
    中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个...
  • SQL查询中位数

    千次阅读 2020-11-08 20:29:55
    中位数是 排序后 位于 正中间 的数 也就是 如果是中位数的话,前面小于它的数有一半,后面大于它的数有一半(假设奇数) 因存在重复的数值,<= 和 >= 中位数的值 分别 至少是一半的个数(很可能比一半多) 如...
  • 寻找两个有序数组的中位数(附上三种解法)

    千次阅读 多人点赞 2019-12-06 18:23:32
    具体思路,中位数的概念其实可以理解为,将数组整体分为两个部分,一边大于等于中位数,一边小于等于中位数。那么在这道题目中两个有序数组,我们可以将两个数组并排画一条线,这条线能正好划分左右两个部分,而我们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 416,375
精华内容 166,550
关键字:

中间数中位数