Numpy 改变数组维度的几种方法小结
来自 《Python数据分析基础教程:Numpy 学习指南(第2版)》
Numpy改变数组维度的方法有:
reshape() ravel() flatten()
用元组设置维度
transpose() resize()
下面将依次进行说明
0. 首先,创建一个多维数组
from numpy import * a = arange(24)
得到:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
1.reshape 函数
b = a.reshape(2,3,4) print(b)
得到一个 2*3*4 维的数组:
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]
可以想象成2层小洋楼,每层有 3*4 个房间
2.ravel函数 可以将多维数组展平(也就是变回一维)
c = b.ravel() print(c)
得到一维数组
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
3.flatten函数 也是将多维数组展平,与ravel函数的功能相同,不过flatten函数会请求分配内存来保存结果,而ravel函数只是返回数组的一个视图(view)
c = b.flatten() print(c)
得到一维数组
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
4.用元组设置维度
直接用一个正整数元组来设置数组的维度
b.shape = (6,4) print(b)
这种做法将直接改变所操作的数组,现在数组b变成了一个 6*4 的多维数组
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19] [20 21 22 23]]
5.transpose函数 将矩阵进行转置
d = b.transpose() print(d)
得到 4*6 的多维数组
[[ 0 4 8 12 16 20] [ 1 5 9 13 17 21] [ 2 6 10 14 18 22] [ 3 7 11 15 19 23]]
6.resize函数 和reshape函数的功能一样,但resize会直接修改所操作的数组
b.resize((2,12)) print(b)
得到 2*12 的两维数组
[[ 0 1 2 3 4 5 6 7 8 9 10 11] [12 13 14 15 16 17 18 19 20 21 22 23]]
并且这一步不可以通过赋值来实现,如下所示:
e = b.resize((2,12)) print(e)
此时结果为:
None
以上这篇Numpy 改变数组维度的几种方法小结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
python增加矩阵维度的实例讲解
numpy.expand_dims(a, axis) Examples >>> x = np.array([1,2]) >>> x.shape (2,) >>> y = np.expand_dims(x, axis=0) >>> y array([[1, 2]]) >>> y.shape (1, 2) >>> y = np.expand_dims(x, axis=1) # Equivalent to
-
numpy求平均值的维度设定的例子
废话不多说,我就直接上代码吧! >>> a = np.array([[1, 2], [3, 4]]) >>> np.mean(a) # 将上面二维矩阵的每个元素相加除以元素个数(求平均数) 2.5 >>> np.mean(a, axis=0) # axis=0,计算所有子数组的平均值 array([ 2., 3.]) >>> np.mean(a, axis=1) # axis=1,对每一个子数组,计算它的平均值 array([ 1.5
-
numpy 对矩阵中Nan的处理:采用平均值的方法
尽管我们可以将所有的NaN替换成0,但是由于并不知道这些值的意义,所以这样做是个下策.如果它们是开氏温度,那么将它们置成0这种处理策略就太差劲了. 下面我们用平均值来代替缺失值,平均值根据那些非NaN得到. from numpy import * datMat = mat([[1,2,3],[4,Nan,6]]) numFeat = shape(datMat)[1] for i in range(numFeat): meanVal = mean(datMat[nonzero(~isnan(dat
-
python处理二进制数据的方法
本文实例讲述了python处理二进制数据的方法.分享给大家供大家参考.具体如下: #!/usr/env/env python #-*- coding: cp936 -*- ''''' add Head Infomation for pcm file ''' import sys import struct import os __author__ = 'bob_hu, hewitt924@gmail.com' __date__ = 'Dec 19,2011' __update__ = 'Dec
-
python 按不同维度求和,最值,均值的实例
当变量维数加大时很难想象是怎样按不同维度求和的,高清楚一个,其他的应该就很清楚了,什么都不说了,上例子,例子一看便明白-.. a=range(27) a=np.array(a) a=np.reshape(a,[3,3,3]) 输出a的结果是: array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8]], [[ 9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 2
-
对numpy中轴与维度的理解
NumPy's main object is the homogeneous multidimensional array. It is a table of elements (usually numbers), all of the same type, indexed by a tuple of positive integers. In NumPy dimensions are called axes. The number of axes is rank. For example, t
-
Numpy 改变数组维度的几种方法小结
来自 <Python数据分析基础教程:Numpy 学习指南(第2版)> Numpy改变数组维度的方法有: reshape() ravel() flatten() 用元组设置维度 transpose() resize() 下面将依次进行说明 0. 首先,创建一个多维数组 from numpy import * a = arange(24) 得到: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 1.reshape
-
js数组去重的N种方法(小结)
对于数组去重我们有n种方法可以实现. es5实现方法 for循环+indexOf function unique(arr) { var uniqueArr = [], len = arr.length for (var i = 0; i < len; i++) { if (uniqueArr.indexOf(arr[i]) == -1) { uniqueArr.push(arr[i]) } } return uniqueArr } var arr = [1, 2, 3, 1, 5, "1&
-
perl 删除数组元素的几种方法小结
1. 用grep函数 函数名 grep 调用语法 @foundlist = grep (pattern, @searchlist); 解说 与同名的UNIX查找工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回值是匹配元素的列表. 例子 @list = ("This", "is", "a", "test"); @foundlist = grep(/^[tT]/, @list); 结果
-
Python创建相同值数组/列表的两种方法
目录 题目要求 解决方法 方法一:使用Python基础语法 方法二:使用numpy包的函数实现 参考资料 总结 题目要求 现在有这样的一个需求:创建一个数组或列表,列表中的所有值是相同的. 解决方法 找到两种解决方法,第一种是使用Python的基础语法,第二种是借助numpy包提供的函数实现.分别为大家进行介绍. 方法一:使用Python基础语法 使用“*”号可以实现列表的创建,使用非常简单,以下示例将会创建长度为20的列表. 另外,不仅可以复制单个元素,还可以实现多个元素的复制,如下示例: 方
-
java 两个数组合并的几种方法
本文介绍了java 两个数组合并的几种方法,分享给大家,也给自己留个笔记 需求:两个字符串合并(如果想去重复,参考下一篇--数组去重复及记录重复个数) //方法一 Arrays类 String[] a = {"A","B","C"}; String[] b = {"D","E"}; // List<String> list = Arrays.asList(a); --OK // List<
-
JavaScript数组去重的五种方法
javascript数组去重是一个比较常见的需求,解决方法也有很多种,网上都可以找到答案的,下面小编给大家整理了一份关于同类型的数组去重的方法,先给大家介绍下简单实现思路. 思路: 遍历数组,一一比较,比较到相同的就删除后面的 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组. 遍历数组,取一个元素,作为对象的属性,判断属性是否存在 1. 删除后面重复的: functio
-
java数组复制的四种方法效率对比
有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? A.for循环逐一复制 B.System.arraycopy C.System.copyof D.使用clone方法 效率:System.arraycopy>clone>Arrays.copyOf>for循环 1.System.arraycopy的用法: public static void
-
JS数组去重的6种方法完整实例
本文实例讲述了JS数组去重的6种方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>www.jb51.net 数组去重</title> </head> <body> <script> //1.filter:(indexOf)方法创建一个新的数组,新数组中的元素是通过检查指定
-
js数组去重的11种方法
在实际工作或面试中,我们经常会遇到"数组去重"问题,接下来就是使用js实现的数组去重的多种方法: 1.将数组的每一个元素依次与其他元素做比较,发现重复元素,删除 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5] function noRepeat1(arr) { for(var i = 0;
-
Java数组添加元素的两种方法
目录 说在前面 方式一: 方式二: 说在前面 数组在使用前,长度就已固定,所以原数组长度是不能再改变了,基于此,提供如下两种方式,给数组添加数据.具体代码如下 方式一: 创建一个新数组,长度为原数组加1,然后将原数组数据添加到新数组,最后再添加需要的新数据 @Test public void redd111(){ String[] s1 = {"aaa","bbb","ccc"}; String[] s2 = new String[s1.leng
随机推荐
- Jmail组件发送邮件之绝对能用的函数
- iOS开发项目- 基于WebSocket的聊天通讯(1)
- JS实现图片平面旋转的方法
- 滑轮滚动到页面底部ajax加载数据配合jsonp实现探讨
- 函数window.open实现关闭所有的子窗口
- YII Framework教程之异常处理详解
- django创建自定义模板处理器的实例详解
- C++ 学习之旅二 说一说C++头文件
- Android使用PullToRefresh实现上拉加载和下拉刷新效果的代码
- Android自定义控件(实现视图树绘制指示器)
- mysql Event Scheduler: Failed to open table mysql.event
- linux网站建立步骤
- JavaScript blog式日历控件新算法
- js插件YprogressBar实现漂亮的进度条效果
- 十种好心态,让你幸福一生的秘密
- Shell中处理包含空格的文件名实例
- C++学习小结之语句
- jQuery源码分析-01总体架构分析
- jQuery网页版打砖块小游戏源码分享
- javascript setTimeout和setInterval 的区别