当前位置: 代码迷 >> 综合 >> numpy手册(1)-ndarray
  详细解决方案

numpy手册(1)-ndarray

热度:34   发布时间:2023-12-17 13:24:59.0

感谢关注天善智能,走好数据之路↑↑↑

欢迎关注天善智能hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学院、问答、找工作,一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

前面我们算是简单入门了Pandas,numpy也是数据分析中常用的,这里我们也来简单学习下。

1.numpy基本介绍

numpy是Python的一种开源数值计算扩展,这种工具可以用来存储和处理大型矩阵。一个用Python实现的科学计算包。(--百度百科)

numpy有2种基本对象,

ndarray(N-dimensional array object)和 ufunc(universal functionobject)

ndarray是存储单一数据类型的多维数组,ufunc是能够对数组进行处理的函数。

2.ndarray

我们先来看看这个数组

首先,我们得引入numpy

import numpy as np 2.1 创建

数组初始化的话有很多方式:Array creation routines

我们可以直接使用list来初始化,array有很多的属性,比如大小,维度,元素个数

import numpy as np a = np. array([ 1, 2, 3]) b = np. array([ 4, 5, 6]) c = np. array([[ 1, 2, 3],[4, 5, 6],[ 7, 8, 9]]) print(a,type(a), ',shape:',a.shape, ',ndim:',a.ndim, ',size:',a.size)print(b,type(b), ',shape:',b.shape, ',ndim:',b.ndim, ',size:',b.size) print(c,type(c),',shape:',c.shape, ',ndim:',c.ndim, ',size:',c.size)

这里呢,我们定义了一维数组和二维数组,比如c,是3行3列的2维数组,元素个数是9个

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

这里,我们再说下这个shape,这个属性可以修改

#原来是4行3列 c = np. array([[ 1, 2, 3],[ 4, 5, 6],[ 7, 8, 9],[ 0, 0, 7]]) print(c) #我们改为3行4列 c.shape=( 3, 4) print(c) #改为2行6列 c.shape=( 2, 6) print(c)

这里需要注意下,如果某个轴的元素为-1,将根据数组元素的个数,自动计算长度

c.shape=( 1,- 1) print(c) c.shape=(- 1, 1) print(c)

这里的shape是改变原来的数组,另一个method,可以创建一个改变shape的新数组,而原数组保持不变

c = np.array([[1,2,3],[4,5,6],[7,8,9],[ 0,0,7]])print('c:',c)d = c.reshape(2,6)print('c:',c)print('d:',d)

这里要注意的是,c和d共享内存数据存储内存区域,c变了,d也会变

print(c[ 0]) #修改c[0] c[ 0]=[- 9,- 8,- 3] print( 'c:',c) print( 'd:',d)

我们可以通过dtype来获取元素的类型,我们可以在初始化的时候,指定dtype

c = np. array([ 1, 2, 3]) print(c.dtype) #int32 d = np. array([ 1.1, 3.3]) print(d.dtype) #float64

下面,我们来看看常用的初始化方法

arange

通过指定开始值,结束值和步长来创建一维数组,这里不包过终值

arange([start,] stop[, step,], dtype=None) np.arange( 3) Out[ 51]: array([ 0, 1, 2]) np.arange( 1, 10, 3) Out[ 52]: array([ 1, 4, 7])

linspace

通过指定开始值,终值和元素个数,来创建数组,这里包括终值

np.linspace( 1, 10, 5) Out[ 53]: array([ 1. , 3.25, 5.5 , 7.75, 10. ]) np.linspace( 1, 2, 3) Out[54]: array([ 1. , 1.5, 2. ]) 2.2 存取元素

这里直接粘贴一个例子,原始教程在这:http://old.sebug.net/paper/books/scipydoc/numpy_intro.html

>>> a = np.arange( 10) >>> a[ 5] # 用整数作为下标可以获取数组中的某个元素5 >>> a[ 3:5] # 用范围作为下标获取数组的一个切片,包括a[3]不包括a[5]array([ 3, 4]) >>> a[: 5] # 省略开始下标,表示从a[0]开始array([ 0, 1, 2, 3, 4]) >>> a[:- 1] # 下标可以使用负数,表示从数组后往前数array([ 0, 1, 2, 3, 4, 5, 6, 7, 8]) >>> a[ 2: 4] = 100, 101# 下标还可以用来修改元素的值 >>> aarray([ 0, 1, 100, 101, 4, 5, 6, 7, 8, 9])>>> a[1:-1:2] # 范围中的第三个参数表示步长,2表示隔一个元素取一个元素array([ 1, 101, 5, 7])>>> a[::-1] # 省略范围的开始下标和结束下标,步长为-1,整个数组头尾颠倒array([ 9, 8, 7, 6, 5, 4, 101, 100, 1, 0])>>> a[5:1:-2] # 步长为负数时,开始下标必须大于结束下标array([ 5, 101])

这是基本的获取方式,还有些高级的方法

使用整数序列

这里简单来2个练习,原文例子很多,就是通过下标来筛选数据

a = np.arange(- 5, 5, 1) a Out[ 68]: array([- 5, - 4, - 3, - 2, - 1, 0, 1, 2, 3, 4]) a[[ 1, 3, 5]] Out[69]: array([- 4, - 2, 0])

使用布尔数组

按照传入的布尔数组,只有为True的才返回

a=np. array([- 3, 1, 5]) a Out[ 72]: array([- 3, 1, 5]) a[[False,True,False]] Out[ 73]: array([ 1]) a[[True,False,True]] Out[ 74]: array([- 3, 5]) 3.附录(参考资料)

文档:https://docs.scipy.org/doc/numpy-dev/reference/index.html#reference

numpy快速处理数据

天善学院svip包含Excel BI、Python爬虫案例、Python机器学习、Python数据科学家、大数据、数据分析报告、数据分析师体系、深度学习、R语言案例10套课程火爆报名中,欢迎大家关注 www.hellobi.com/svip

————————————————

转载请保留以下内容:

本文来源:天善社区yuguiyang1990老师

原文链接:https://ask.hellobi.com/blog/yuguiyang1990/9124

天善学院svip正火爆报名中!包含Excel BI、Python3爬虫案例、Python机器学习、Python数据科学家、大数据体系、数据分析报告、数据分析师体系、深度学习、R语言案例共10套课程,其他课程只需五折即可,欢迎大家关注报名!详情可见:https://www.hellobi.com/svip