numpy学习 第1篇:ndarray 创建和索引

numpy是Python中用于科学计算的基础软件包,提供了多为数据组对象,用于对数据进行快速操作,包括数学,逻辑,形状处理,排序,选择,I / O ,离散傅立叶变换,基本线性代数,基本统计运算,随机模拟等等。

numpy包中最核心的类型是ndarray,定义了一个执行矢量算术运算的n维数组,无需编写循环,就能对整个数组进行批量运算。通常情况下,导入numpy,设置别名为np。

import numpy as np 

ndarray对象有几个非常明显的特征:

  • ndarray对象在创建时有固定的大小,更改ndarray的大小将创建一个新数组并删除原始数组。
  • ndarray对象中的元素类型是相同的,
  • ndarry有助于对大量数据进行高级数学运算和其他类型的运算
  • 越来越多的基于Python的科学和数学软件包都使用NumPy数组。

一,创建多维数组

ndarray是N-Dimension-Array的简称,该对象是一个快速而灵活的大数据集容器,该容器中存储的元素的数据类型都是相同的。

1,使用array()函数创建数组

使用array()函数创建数组,可以使用type()函数查看对象的类型:

a1 = np.array([1,2,3,4,5])
a2 = np.array([[1,2,3,4,5],[6,7,8,9,10]])

通过array()函数,使用列表创建的是一维数组,使用嵌套的列表创建的是多维数组。

2,使用arange()和reshape()函数创建数组

通过arange()函数创建ndarray,产生一维数组,数组的元素是一个序列,默认值start=0,不包括stop,step=1。

numpy.arange([start, ]stop, [step, ]dtype=None)

numpy.arange()的用法示例:

a = np.arange(10) #default start=0, end=10(exclude 10),step=1
# [0 1 2 3 4 5 6 7 8 9]
a1 = np.arange(5,10) # start=5, end=10(exclude=10),step=1
# [5 6 7 8 9]
a2 = np.arange(5,20,2) # start=5, end=20(exclude 20),step=2
#[ 5  7  9 11 13 15 17 19]

可以使用reshape()函数重塑ndarray()的shape,把12个元素的一维数组转换为3行4列的二维数组:

>>> np.arange(12).reshape(3,4)
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

3,数组可以转换为列表

ndarray对象的tolist()函数可以把一个数组对象转化为list列表:

>>> np.arange(12).reshape(3,4).tolist()
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

二,数组的属性

数组对象的属性主要有:

  • dtype:描述数组元素的类型
  • shape:以tuple表示的数组形状
  • ndim:数组的维度
  • size:数组中元素的个数

1,dtype对象

dtype是一个特殊的对象,它表示数组元素的类型。

2,shape对象

以元组形式表示一个数组的维度,前三个维度有名称:第一个维度是行,第二个维度是列,第三个维度是高

3,ndim对象

数组各个维度的元素数量

三,索引和切片

ndarray对象的元素可以通过索引或切片来访问和修改,索引基于0。

1,数组的索引

一维数组很简单,从表面上看,一维数组的索引跟Python列表的功能差不多。

arr = np.arange(10)

arr[index]
arr[start:end]
arr[start:end:step]

在一个二维数组中,各索引位置上的元素不再是标量,而是一维数组。

arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])

>>> arr2d[2]
# array([7,8,9])
>>> arr2d[0][2]
#3
>>> arr2d[0,2]
#3

对于更高维度的数组,一个中括号表示一个维度,索引的使用依此类推。

2,数组的切片

数组切片是原始数组的视图,修改切片中的原始,会直接修改原始数据。数组的切片是Python基本切片的概念从一维到N维的扩展,通过中括号,start,stop和step参数提供给内置函数的slice函数来构造一个Python slice对象,此slice对象被传递给数组来提取数组的一部分。

获取切片的格式是[start:end:step],如果省略start,使用start的默认值0;如果省略end,那么end的默认值是:维度长度-1;如果省略step,使用step的默认值1。通常情况下,数组的切片是[start:end],这就意味着使用step的默认值1。

对于一维数组,数组切片上的任何修改都会直接修改原始数组:

arr = np.arange(10)
arr_slice=arr[5:8]
arr_slice[1]=111
#arr=array([0,1,2,3,4,5,111,7,8,9])

arr_slice[:]=222
#arr=array([0,1,2,3,4,222,222,222,8,9])

对于二维数组,一个中括号表示一个维度,依此类推。

 

参考文档:

Numpy Quickstart tutorial

Python NumPy学习总结

转载于:https://www.cnblogs.com/ljhdo/p/10559388.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值