Numpy--存取数组

import numpy as np
#存取元素
#数组元素同列表一样,存在切片的性质

#一维数组
#可以使用太通列表一样的方式对数组元素进行存取
a = np.arange(10)#使用arange创建数组,数组的下标是从0开始的
print a

print a[5]#输出的是下标为5,但是是第6个元素
print a[3:5]#切片取元素,获取下标3,4的元素
print a[:5]#获取从开始到下标为4的元素
print a[:-1]#下标可以是负数,表示数组从后往前数

#重新赋值
a[2:4]=100,101#切片样式的取值可以赋值
print a
print a[1:-1:2]#从下标为1开始取值到最后,每隔两个元素取
print a[::-1]#步长为-1,表示从后往前取值
print a[5:1:-2]#步长为负数时,表示开始下标必须大于结束下标

#和列表不同的是,通过切片获取的新数组和原来的数组公共一个视图。他与原始数组共享一块数据存储空间。
#
#当使用整数列表对数组元素进行存取时,将使用列表中的每个元素当做新数组的下标,从原始的数组中获取元素。使用列表当做下标获取的元素新组成的数组,不与原始的数组共享数据存储空间。

x = np.arange(10,1,-1)#数组中的元素不包含1,终止的元素为2
print x
#[10  9  8  7  6  5  4  3  2]

print x[[3,3,1,8]]
#[7 7 9 2]

x[[3,5,1]]=-1,-2,-3
print x


#当下标是多维数组时,则得到的也是多维数组。我们可以理解成:现将下标数组展平为一维数组,并作为下标获取一个新的一维数组,然后再将其形状修改写成下标数组的形状。

print x[np.array([[3,3,1,8],[3,3,-3,8]])]
print x[[3,3,1,8,3,3,-3,8]].reshape(2,4)

#当使用布尔数组b作为下标存取数组x 中的元素时,将收集数组x 中所有在数组b中对应下标为True的元素。
#使用布尔数组获取的元素新数组,不与原来的数组共享存储空间。
#

x = np.arange(5,0,-1)
print x
#[5 4 3 2 1]
print x[np.array([True,False,True,False,False])]
#[5 3]
#如果是bool列表,则把True当做1,False当做0,按照整数序列方式获取数组x中的元素。
print x[[True,False,True,False,False]]

#如果布尔数组的长度不够,其余的默认是False

x[np.array([True,False,True,True])] = -1, -2, -3
print x
#[-1  4 -2 -3  1]
Numpy是Python中一个强大的科学计算库,主要用于处理大型多维数组和矩阵,以及执行各种数学运算。下面是Numpy v1中一些核心功能的简介: 1. **创建数组**:Numpy的核心数据结构是ndarray(n-dimensional array),通过`numpy.array()`或`numpy.zeros()`、`numpy.ones()`、`numpy.empty()`等函数可以创建不同形状和类型的数据。 2. **数组尺寸**:你可以使用`.shape`属性获取数组的维度, `.size`属性得到元素数量,而`.dtype`属性显示数组的元素类型。 3. **数组运算**:Numpy提供了大量的数学函数对数组进行元素级操作,如加减乘除、指数对数等。例如,`a + b`, `a * 2`, `np.sin(a)`等。 4. **数组切片**:使用索引和切片语法,可以访问数组的部分元素或子数组。如`arr[0:3, ::2]`获取数组的一部分。 5. **数组连接**:`numpy.concatenate()`, `numpy.vstack()`, `numpy.hstack()`等函数用于合并数组或沿着某轴堆叠数组。 6. **数据存取**:可以使用索引来存取单个元素,如`arr[i, j]`。对于大规模数组,可以使用切片操作。 7. **数组形态变换**:包括重塑(`reshape()`), 切块(`split()`, `hstack()`, `vstack()`)、堆叠(`stack()`)等操作,改变数组的形状。 8. **数组排序与搜索**:`numpy.sort()`用于排序数组,`numpy.argmax()`, `numpy.argmin()`用于找到最大值和最小值的索引,`numpy.where()`则进行条件搜索。 9. **矩阵与线性代数运算**:Numpy提供了`numpy.linalg`模块,包含许多矩阵操作,如求逆(`inv()`)、行列式(`det()`)、秩(`rank()`)、解线性方程组等。例如,`A = np.random.rand(3, 3)`后,可以做`A.dot(B)`矩阵乘法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值