python运算学习之Numpy ------ 数组的切片索引与循环遍历、条件和布尔数组、

数组的切片索引:

  数组的切片索引和列表非常类似,下面用代码简单说明

 1 a = np.random.rand(16).reshape(4, 4)
 2 print("数组a:\n", a)
 3 print(a[-1][1:4])
 4 Out[1]:
 5 数组a:
 6  [[0.04175379 0.43013992 0.5398909  0.40638248]
 7  [0.3305902  0.11958799 0.48680358 0.30755734]
 8  [0.00893887 0.3848716  0.21018253 0.88170218]
 9  [0.80198391 0.4922656  0.67535542 0.64647139]]
10 [0.4922656  0.67535542 0.64647139]

  由于和列表类似,且要符号多维数组的特征,所以这里不过多阐述。有需要参考列表的相关知识。

数组的循环遍历:

 1 a = np.random.rand(9).reshape(3, 3)
 2 print("数组a:\n", a)
 3 for row in a:
 4     print(row)  # 一行一行的输出
 5 for item in a.flat:
 6     print(item)
 7 # 通用的循环函数
 8 for_test = np.apply_along_axis(np.mean, axis=0, arr=a)  # apply_along_axis(func1d, axis, arr, *args, **kwargs)
 9 print("np.apply_along_axis的调试:\n", for_test)  # axis=0为按列,axis=1为按行
10 Out[2]:
11 数组a:
12  [[0.97420758 0.20766438 0.52942127]
13  [0.82673775 0.44288163 0.41729451]
14  [0.1373707  0.68103565 0.92256133]]
15 [0.97420758 0.20766438 0.52942127]
16 [0.82673775 0.44288163 0.41729451]
17 [0.1373707  0.68103565 0.92256133]
18 0.9742075804081937
19 0.20766438289931244
20 0.5294212665874829
21 0.8267377457345865
22 0.44288163199889663
23 0.4172945079908593
24 0.13737070280419617
25 0.6810356459375222
26 0.922561331228303
27 np.apply_along_axis的调试:
28  [0.64610534 0.44386055 0.62309237]

  np.apply_along_axis()方法在我们对矩阵按行按列操作的时候最好用它。注意,第一个参数是方法,方法可以是自己对矩阵每个元素操作的函数方法。

条件和布尔数组:

1 a = np.random.rand(9).reshape(3, 3)
2 print(a < 0.5)          # 输出布尔数组
3 print(a[a < 0.5])       # 输出true对应的元素
4 Out[3]:
5 [[ True False  True]
6  [False  True False]
7  [False  True False]]
8 [0.19353844 0.03944841 0.38137674 0.3069755 ]

数组 形状变化:

 1 a = np.random.rand(9).reshape(3, 3)
 2 a = a.ravel()  # 此时的a是一个新数组
 3 print(a)  # 将数组平铺成一维数组
 4 a.shape = (3, 3)  # 你也可以用reshape
 5 print(a)
 6 Out[4]:
 7 [0.83017305 0.11660585 0.83060752 0.221212   0.35489551 0.74925696
 8  0.61087204 0.85969402 0.90966368]
 9 [[0.83017305 0.11660585 0.83060752]
10  [0.221212   0.35489551 0.74925696]
11  [0.61087204 0.85969402 0.90966368]]

  注意用A.T表示转置,或者用A.transpose()。

原文地址:https://www.cnblogs.com/dan-baishucaizi/p/9388007.html

时间: 2024-12-10 17:52:38

python运算学习之Numpy ------ 数组的切片索引与循环遍历、条件和布尔数组、的相关文章

Go语言入门——数组、切片和映射

按照以往开一些专题的风格,第一篇一般都是“从HelloWorld开始” 但是对于Go,思来想去,感觉真的从“HelloWorld”说起,压根撑不住一篇的篇幅,因为Go的HelloWorld太简单了. 1.简介 Go是什么? Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言.——摘自百度百科 Github地址 https://github.com/golang/go 官网地址 https://golang.org 中文网社区 https://

go语言的数组与切片

go语言的数组与切片 如果有编程基础的话,提到数组我们肯定不会陌生,所谓数组,就是有数的元素序列,我们可以认为数组是有限的相同类型数据的集合. 数组长度是固定的,所以这会带来很多局限性. 比如说只接受相同类型的元素,长度固定等等. 那么切片的出现,则为golang解决了以上数组所带来的不便. 切片(slice)是一个引用类型,它是拥有相同类型的元素并且长度可变的序列. 基于数组类型做的一层封装,支持扩容. 切片的内部结构包含地址.长度.容量.它主要用于服务一块数据的集合. 下面我们来看一看数组的

【MongoDB学习笔记23】MongoDB的索引对象和数组

MongoDB允许深入文档内部,对嵌套字段和数组建立索引:嵌套对象和数组字段可以和复合索引中的顶级字段一起使用,多数情况下与"正常"索引字段的行为也是一致的. 一.索引嵌套文档 例如,集合中的文档如下格式, > db.post.findOne({"username":"sid"})    {         "_id" : ObjectId("54aff7f43bd1048e7b585e39"),  

Python中的用for,while循环遍历文件实例

使用for循环遍历文件 打开文件 open r:以读模式打开 w:以写模式打开 a:以追加模式打开 r+:以读写模式打开 w+:以读写模式打开(参见w) a+:以读写模式打开(参见a) rb:以二进制读模式打开 wb:以二进制写模式打开(参见w) ab:以二进制追加模式打开(参见a) rb+:以二进制读写模式打开(参见r+) wb+:以二进制读写模式打开(参见w+) ab+:以二进制读写模式打开(参见a+) 查看帮助: open(...) open(name[, mode[, buffering

数据分析2 numpy(ndarray数组,属性,创建,索引切片,运算,函数,随机数), Pandas(Series创建,缺失值处理,特性,索引,DataFrame)

Numpy numpy数据类型 1.为啥使用numpy ? ndarray是一个多维数组列表 Numpy的核心特征就是N-维数组对----ndarray 它和python中的列表区别: 1.数组对象内元素类型必须相同 2.数组大小不可修改 2.创建ndarray     数组 3.常见的属性 数据类型 astype()方法可以修改数组类型 4.ndarray的创建方式 5.索引 6.切片 7.数组的向量运算和矢量运算 8. 布尔型索引 9.花式索引 10.一元函数 11.数学统计函数 12.随机

Python中numpy 数组的切片操作

Python中numpy 数组的切片操作简介取元素 X[n0,n1]切片 X[s0:e0,s1:e1]切片特殊情况 X[:e0,s1:]示例代码输出结果简介X[n0,n1]是通过 numpy 库引用二维数组或矩阵中的某一段数据集的一种写法.类似的,X[n0,n1,n2]表示取三维数组,取N维数组则有N个参数,N-1个逗号分隔.以二维数组为例: import numpy as npX = np.array([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,

[python]-数据科学库Numpy学习

一.Numpy简介: Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象.对于数值运算来说这种结构显然比较浪费内存和CPU计算时间.此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似.但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算. NumPy提供了两种基本的对象:nda

利用 Python 进行数据分析(五)NumPy 基础:ndarray 索引和切片

概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为array[index1:index2],意思是从index1索引位置开始,到index2索引(不包括index2)位置结束的一段数组.例如: 当把一个值赋值为一个切片时,该值会作用于此数组片段里每一个元素,例如: 二维数组 二维数组的索引 当以一维数组的索引方式访问一个二维数组的时候,获取的元素不在

【Python实战15】NumPy数组的创建

NumPy提供了一个N维数组对象,即:ndarray.ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的. 创建ndarray数组 创建数组最简单的方式就是使用array函数,它接受一切序列型的对象,然后产生一个新的含有传入数据的NumPy数组.如下: 嵌套的序列将会被转换为一个多为数组: 除非显示的说明,np.array会尝试为新建的这个数组推断出一个较为合适的数据类型,我们可以通过dtype来进行查看,比如上面刚建立的数组类型为:int32类型:另,我们可以