python数组操作

NumPy笔记

浪子不回头ぞ 提交于 2020-01-03 02:36:24
  最近在看《利用Python进行数据分析》这本书,也会在网上查看一些资料,所以会对某些感觉比较重要的部分进行总结,一方面加深自己对一些方法的记忆,一方面方便自己以后的大总结。   基本概念:   Numpy(Numerical Python)是高性能科学计算和数据分析的基础包   NumPy的ndarray:多维数组对象,快速灵活的大数据集容器   所有元素必须是同类型   可以查看官方文档https://docs.scipy.org/doc/numpy/reference/routines.html,也可以到http://download.csdn.net/download/nsguf/9944297进行下载。   以下源码下载:https://github.com/NSGUF/PythonLeaning   常用属性: print(np.version.version)#numpy的版本 data1=[1,2,3,4] arr1=np.array(data1) print(arr1) data2=[[1,2,3,4],[5,6,7,8]] arr2=np.array(data2) print(arr2) print("------------属性---------------") print(arr2.ndim)#数组的维数 print(arr2.shape)#数组的维度

Numpy数组对象的操作-索引机制、切片和迭代方法

做~自己de王妃 提交于 2020-01-03 02:33:52
前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法。使用索引和切片的方法选择元素,还有如何数组的迭代方法。 一、索引机制 1.一维数组 In [1]: a = np.arange(10,16) In [2]: a Out[2]: array([10, 11, 12, 13, 14, 15]) #使用正数作为索引 In [3]: a[3] Out[3]: 13 #还可以使用负数作为索引 In [4]: a[-4] Out[4]: 12 #方括号中传入多数索引值,可同时选择多个元素In [6]: a[[0,3,4]]Out[6]: array([10, 13, 14]) 2.二维数组 二维数组也被称为矩阵,是由行和列组成的。axes为2,用0轴表示行,用1表示列。[行索引,列索引] In [14]: A Out[14]: array([[10, 11, 12], [13, 14, 15], [16, 17, 18]])#取出第三行第二列的元素 In [15]: A[2,1] Out[15]: 17#可以使用方括号取出多个元素 In [17]: A[[[2,1],[1,2]]] Out[17]: array([17, 15]) 二、切片操作:抽取部分数组元素生成新数组 1.一维数组切片操作 In [26]: a = np.arange(10,20) In [27]:

NumPy数组基本的索引和切片

时间秒杀一切 提交于 2020-01-03 02:32:42
对一维数组来说,NumPy数组的索引切片与Python列表的功能差不多: >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> arr[3] 3 >>> arr[2:6] array([2, 3, 4, 5]) >>> arr[3:] array([3, 4, 5, 6, 7, 8, 9]) 但是,特别注意的是,如果要将一个标量值赋值给一个切片,这个修改会直接反映到源数组上(即使你已经新建了一个变量来保存),NumPy数组切片是原始数组的视图。 >>> arr_temp = arr[4:6] >>> arr_temp array([4, 5]) >>> arr_temp[1]=7 >>> arr array([0, 1, 2, 3, 4, 7, 6, 7, 8, 9]) 因为NumPy设计的目的是处理大数据,所以如果要不断复制数据的话会带来巨大的性能和内存问题。因此,NumPy选择所有切片都使用初始视图来提高效率。 对高维数组,可以对各个元素进行递归访问。为了方便,可以传入以逗号隔开的索引列表来选取: >>> arr2=np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> arr2[1] array([4, 5, 6]) >>> arr2[1][1] 5 >>> arr2[1,1] 5 再比如这个: >>>

numpy数组之读写文件

余生长醉 提交于 2020-01-03 02:25:39
目录 通过 numpy 读写 txt 或 csv 文件 通过 numpy 读写 npy 或 npz 文件 读写 npy 文件 读写 npz 文件 通过 h5py 读写 hdf5 文件 简单读取 通过切片赋值 总结 References 将 numpy 数组存入文件,有多种文件类型可供选择,对应地就有不同的方法来读写。 下面我将介绍读写 numpy 的三类文件: txt 或者 csv 文件 npy 或者 npz 文件 hdf5 文件 通过 numpy 读写 txt 或 csv 文件 import numpy as np a = np.array(range(20)).reshape((4, 5)) print(a) # 后缀改为 .txt 一样 filename = 'data/a.csv' # 写文件 np.savetxt(filename, a, fmt='%d', delimiter=',') # 读文件 b = np.loadtxt(filename, dtype=np.int32, delimiter=',') print(b) 缺点: 只能保存一维和二维 numpy 数组,当 numpy 数组 a 有多维时,需要将其 a.reshape((a.shape[0], -1)) 后才能用这种方式保存。 不能追加保存,即每次 np.savetxt() 都会覆盖之前的内容。 通过

Numpy学习笔记(二)

余生长醉 提交于 2020-01-03 02:18:40
(1)NumPy - 切片和索引 l ndarray对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片和高级索引。 l 基本切片 Python 中基本切片概念到 n 维的扩展。切片只是返回一个观图。 l 如果一个ndarray是非元组序列,数据类型为整数或布尔值的ndarray,或者至少一个元素为序列对象的元组,我们就能够用它来索引ndarray。高级索引始终返回数据的副本。 有两种类型的高级索引:整数和布尔值。 整数索引实例 import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print y 输出如下:[1 4 5] 布尔索引实例 import numpy as np a = np.array([np.nan, 1,2,np.nan,3,4,5]) print a[~np.isnan(a)] 输出如下[ 1. 2. 3. 4. 5.] (2)NumPy广播 广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。 如果两个阵列具有完全相同的形状,则这些操作被无缝执行。如果两个数组的维数不相同,则元素到元素的操作是不可能的。 然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。 较小的数组会 广播

python数据分析入门

眉间皱痕 提交于 2020-01-01 16:16:56
什么是数据分析? 数据分析:就是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律. 数据分析三剑客:Numpy,Pandas,Matplotlb NumPy简介 NumPy(Numerical python)是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. NumPy的前身Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。 NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含: - 一个强大的N维数组对象ndarray - 广播功能函数 - 整合 c/c++/Fortran 代码的工具 - 线性代数, 傅里叶变换、随机数生成等功能 NumPy应用 NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。 SciPy 是一个开源的 Python 算法库和数学工具包。 SciPy

Python-Numpy函数-tile函数

故事扮演 提交于 2019-12-30 20:32:00
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题: 先来引入numpy下的所有方法 我们创建一个a,如图下图,使用tile来创建b,注意看b的数据结构 假如我们输入一个元组(1,2),我们会得到一样的结果,与上面相同的b 当然,我们想要a变为一个二维数组,就要换一种重复的方式了。 b = tile(a,(m,n)):即是把a数组里面的元素复制n次放进一个数组c中,然后再把数组c复制m次放进一个数组b中 1.tile函数的定义与说明    函数格式tile(A,reps)   A和reps都是array_like   A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以及bool类型。   reps的类型也很多,可以是tuple,list, dict, array, int, bool.但不可以是float, string, matrix类型。 2.函数操作示例 >>> tile(1,2) array([1, 1]) >>> tile((1,2,3),3) array([1, 2, 3, 1, 2, 3, 1, 2, 3]) >>>

关于NumPy的一些基础知识

痞子三分冷 提交于 2019-12-30 04:56:00
关于NumPy的一些基础知识,供有一定NumPy基础的人作复习用 创建ndarray 每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象),还有一个ndim(表示数组有几个维度) ndarray的数据类型 可以通过ndarray的astype方法转换其dtype(不会改变原对象): 警告:浮点数(比如float64和float32)只能表示近似的分数值。在复杂计算中,由于可能会积累一些浮点错误,因此比较操作只能在一定小数位以内有效 数组和标量之间的运算 大小相等的数组之间的任何算术运算都会将运算应用到元素级: 数组与标量的算术运算也会将那个标量值传播到各个元素: 索引和切片 跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。 如果你想要得到的是ndarray切片的一份副本而非视图,就需要显式地进行复制操作,例如arr[5:8].copy() 对元素访问 两者等价 标量值和数组都可以被赋值给data[0]: 切片索引 高纬度数组,可以在一个或多个轴上进行切片,也可以跟整数索引混合使用。 可以看出,它是沿着第0轴(既第一个轴)切片的。也就是说,切片是沿着一个轴向选取元素的。你可以一次传入多个切片,就像传入多个索引那样: 像这样进行切片时,只能得到相同维数的数组视图

Java学习里程-----Java基础_8数组与集合

落花浮王杯 提交于 2019-12-30 03:01:36
一、数组 数组我们上一讲中说数据结构的时候有提到过,但是那个是一维数组,相应的我们还有多维数组。下面我们来说说数组如何添加、如何遍历。 我们可以使用for循环,循环的条件是不超过数组的长度。数组的长度是3,我们可以用数组点length这个获取到数组的长度。 这里我们还得说一个重要的东西。再来看代码 可能有一些同学看出来了,当a的值是0的时候,i[0] = 1 。当a的值是1的时候,i[1]的值是2。 数组中,第一个元素的开始位置是0,而不是1,为啥要这么定义啊,为啥不从1开始?这个就是我前面说的,这东西是外国人定义的,不是我们中国人定义的,人家就是喜欢从0开始,没办法,我们就只能也是从0开始。 当然,除去这样的用for循环来遍历,我们再引入另外一种循环,叫foreach循环,这个之所以前面没有说,是因为怕你们接受不了,所以我就放在数组这里了。 foreach 循环用法是这样滴: 看,是不是方便许多?大家可以练习一下,我来解释这些个东西。 for(int a : i)foreach没有去从新弄个关键字,而是用的for这个关键字,然后括号中写的就是要遍历的对象。 int 你要遍历的数组是int类型的数组,所以就使用int,如果数组是char,那么这里的int 需要换成char。 a 这个是给每一个循环出来的结果赋值为a,第一次循环开始执行的时候,将i[0]赋值给a变量,那么a就等于i

python中数组与多维数组用法介绍

放肆的年华 提交于 2019-12-28 05:04:35
本文转载自: https://www.cnblogs.com/alibai/p/4027324.html 作者:alibai 转载请注明该声明。 增加时a.append( 'a ')就可以了。只要按顺序加,就没有问题 。 使用时,完全可以使用下标: 代码如下 复制代码 a[0] a[1] 但出果引用不存在的下标,则会引发异常。这时,你需要先添加元素,再引用就没有问题 了。如果想预先保留空间,可以使用循环来给list,每个元素一个缺省值,再引用就不会有问题 了。 如: 代码如下 复制代码 a=[] for i in range(100): a.append([]) for j in range(100): a[i].append(0) 这样就生成了一个100*100缺省值为0的数组。 #创建一个宽度为3,高度为4的数组 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0] * 3] * 4但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成 [[0,1,0], [0,1,0], [0,1,0], [0,1,0]] 为什么...一时搞不懂,后面翻阅The 用法 介绍.html' target='_self'>Python Standard Library 找到答案 list * n—>n shallow