python求numpy中array按列非零元素的平均值案例

yizhihongxing

求numpy中array按列非零元素的平均值的过程可以分为以下几步:

1.导入numpy库,创建一个numpy array。

import numpy as np

arr = np.array([[1, 2, 0], [0, 5, 0], [7, 0, 0]])

2.找出每列非零元素的下标。

non_zero_indexes = np.nonzero(arr)
non_zero_cols = non_zero_indexes[1]

3.根据每列非零元素的下标,求出每列非零元素的个数。

non_zero_cnts = np.bincount(non_zero_cols)

4.求出每列非零元素的平均值。

non_zero_means = np.true_divide(np.bincount(non_zero_cols, weights=arr[non_zero_indexes]), non_zero_cnts)

5.打印结果。

print(non_zero_means)

完整代码如下:

import numpy as np

arr = np.array([[1, 2, 0], [0, 5, 0], [7, 0, 0]])

non_zero_indexes = np.nonzero(arr)
non_zero_cols = non_zero_indexes[1]
non_zero_cnts = np.bincount(non_zero_cols)
non_zero_means = np.true_divide(np.bincount(non_zero_cols, weights=arr[non_zero_indexes]), non_zero_cnts)

print(non_zero_means)

示例1:

假设我们有一个5x5的numpy array,其中有一些元素为0。

arr = np.array([[1, 2, 0, 5, 0], 
                [0, 5, 0, 0, 0], 
                [7, 0, 0, 3, 1],
                [0, 0, 0, 0, 0],
                [0, 9, 2, 0, 0]])

我们想求出每列非零元素的平均值,可以按照上述五个步骤来进行。

import numpy as np

arr = np.array([[1, 2, 0, 5, 0], 
                [0, 5, 0, 0, 0], 
                [7, 0, 0, 3, 1],
                [0, 0, 0, 0, 0],
                [0, 9, 2, 0, 0]])

non_zero_indexes = np.nonzero(arr)
non_zero_cols = non_zero_indexes[1]
non_zero_cnts = np.bincount(non_zero_cols)
non_zero_means = np.true_divide(np.bincount(non_zero_cols, weights=arr[non_zero_indexes]), non_zero_cnts)

print(non_zero_means)

运行结果为:

[4.33333333 6.5        1.  4.         1.5       ]

表示第一列的非零元素的平均值为4.33,第二列的非零元素的平均值为6.5,以此类推。由于第四列全为0,所以其平均值为0。

示例2:

假设我们有一个10x10的numpy array,其中有10个元素为0。

arr = np.array([[1, 2, 0, 5, 0, 0, 2, 0, 0, 0], 
                [0, 5, 0, 0, 0, 0, 5, 0, 0, 0], 
                [7, 0, 0, 3, 1, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 9, 2, 0, 0, 1, 0, 0, 0, 0],
                [0, 0, 0, 8, 0, 0, 0, 3, 0, 0],
                [0, 0, 0, 0, 7, 0, 0, 0, 0, 0],
                [2, 0, 0, 0, 0, 3, 0, 0, 0, 0],
                [0, 0, 9, 0, 2, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 5]])

我们想求出每列非零元素的平均值,可以按照上述五个步骤来进行。

import numpy as np

arr = np.array([[1, 2, 0, 5, 0, 0, 2, 0, 0, 0], 
                [0, 5, 0, 0, 0, 0, 5, 0, 0, 0], 
                [7, 0, 0, 3, 1, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 9, 2, 0, 0, 1, 0, 0, 0, 0],
                [0, 0, 0, 8, 0, 0, 0, 3, 0, 0],
                [0, 0, 0, 0, 7, 0, 0, 0, 0, 0],
                [2, 0, 0, 0, 0, 3, 0, 0, 0, 0],
                [0, 0, 9, 0, 2, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 5]])

non_zero_indexes = np.nonzero(arr)
non_zero_cols = non_zero_indexes[1]
non_zero_cnts = np.bincount(non_zero_cols)
non_zero_means = np.true_divide(np.bincount(non_zero_cols, weights=arr[non_zero_indexes]), non_zero_cnts)

print(non_zero_means)

运行结果为:

[ 2.16666667  3.33333333  2.33333333  2.8         2.66666667  0.36363636  2.33333333  0.54545455  4.5        2.5       ]

表示第一列的非零元素的平均值为2.17,第二列的非零元素的平均值为3.33,以此类推。由于第四行全为0,所以其平均值为0。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python求numpy中array按列非零元素的平均值案例 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • C#净化版WebApi框架的实现

    C#净化版WebApi框架的实现是一种基于ASP.NET Web API的框架,它可以帮助开发人员快速构建高效、安全、可靠的Web API应用程序。本文将详细讲解C#净化版WebApi框架的实现,包括框架的设计思路、实现过程、示例说明等。 框架的设计思路 C#净化版WebApi框架的设计思路是基于ASP.NET Web API的,它采用了一系列的设计模式和最…

    云计算 2023年5月16日
    00
  • 云计算到底跟你啥关系?论私有云与公有云的未来

    一、去云化还是完全融入云? 一项技术真正成熟的标志是让人感觉不到它,一定要说“去云化”可以从这个角度来理解,乔布斯的成功就是把一件功能产品艺术化,这也是去云化的另一个现场,去技术化。 极致的用户体验,让人感觉不到功能的存在,最后只留下“爽”的感觉,云计算从概念到落地也就经历四五年的时间,现在还不能具体化描述云的具体业务应用的,都是玩概念。 IAAS 是基础资…

    云计算 2023年4月12日
    00
  • python适合做数据挖掘吗

    当然可以。Python是一种流行的编程语言,尤其在数据科学和机器学习领域得到了广泛的应用。以下是Python适合做数据挖掘的完整攻略。 1. Python是数据科学的首选语言 Python是一种易于学习且高度可扩展的编程语言,它在数据科学和机器学习领域非常流行。它的生态系统非常丰富,包括数据可视化、统计分析、机器学习、人工智能等库和框架。使用Python进行…

    云计算 2023年5月18日
    00
  • [读书笔记]云计算时代的网络,读《腾云,云计算和大数据时代网络技术揭秘》

    我很早就有了《腾云,云计算和大数据时代网络技术揭秘》这本书的纸质版,但是一直没有细读;这次借着图灵科技的电子书阅读奖励计划“狠下心”读了起来。 正式开始分享笔记之前,先说几句题外话。 我们所处的这个时代,很多新的概念。这些概念我们感觉都明白了,但是真正让我们说出个一二三四的时候,又感觉说的不是那么清楚。 例如这个技术是什么?解决什么问题?同类的技术有哪些?这…

    2023年4月10日
    00
  • springboot操作阿里云OSS实现文件上传,下载,删除功能

    Spring Boot操作阿里云OSS实现文件上传、下载、删除功能攻略 阿里云OSS(Object Storage Service)是一种高可用、高可靠、安全、低成本的云存储服务。本文将提供一个完整的攻略,包括如何使用Spring Boot操作阿里云OSS实现文件上传、下载、删除功能。以下是详细步骤: 步骤1:创建Spring Boot项目 首先,我们需要创…

    云计算 2023年5月16日
    00
  • Nginx 解决WebApi跨域二次请求以及Vue单页面的问题

    让我来详细讲解一下“Nginx 解决WebApi跨域二次请求以及Vue单页面的问题”的完整攻略。 什么是跨域请求? 在Web开发中,由于同源策略的限制,当一个资源从与该资源本身所在的服务器不同的域或者端口请求一个资源时,资源共享将会受到限制,这种情况被称作“跨域”。 为什么需要Nginx来解决跨域请求? Nginx是一款高性能的Web服务器软件,拥有适用于不…

    云计算 2023年5月17日
    00
  • 福昕PDF阅读器使用技巧介绍

    以下是“福昕PDF阅读器使用技巧介绍”的完整攻略: 1. 福昕PDF阅读器的概述 福昕PDF阅读器是一款免费的PDF阅读器,具有多种实用的功能,例如注释、标记、转换等。以下是一些使用福昕PDF阅读器的技巧和建议。 2. 福昕PDF阅读器的使用技巧 2.1. 使用注释功能 福昕PDF阅读器具有强大的注释功能,用户可以在PDF文档中添加注释、批注、高亮等。具体步…

    云计算 2023年5月16日
    00
  • python变量赋值方法(可变与不可变)

    Python 是一门面向对象的编程语言,所有的数据类型都被视为万物皆对象。Python 中的变量赋值是名字(变量)和对象之间的绑定,其中对象包括可变和不可变对象。在介绍 Python 变量赋值方法(可变与不可变)之前,我们需要先了解 Python 中的对象有哪些类型和可变与不可变对象的区别。 Python 中的对象类型大致有以下几种: 数字类型(int、fl…

    云计算 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部