python numpy官方文档_入门numpy(25%-50%)【解读numpy官方文档】

本文是作者学习Python Numpy官方文档的心得分享,详细介绍了Numpy的基本操作,包括数组创建、类型转换、数学函数、索引与切片、多维数组操作等,适合初学者入门。
摘要由CSDN通过智能技术生成

前言

最近在学习入门python可视化,先后初步探索了seaborn、matplotlib、plotly和ggplot

发现还是pandas的绘图最容易上手,样式也很商务化,学完官方文档之后和大家一起分享

言归正传,今天继续连载numpy入门系列

基本操作

当使用不同类型的数组时,结果得到的数组的类型对应于更一般或精确的数组(称为upcasting的行为)。

import numpy as np

from numpy import pi

注:从numpy中导入pi(π)

a = np.ones(3, dtype=np.int32)

a

注:创建一个一行三列的矩阵(元素都是1)

注:在0-π之间均匀产生三个等间隔的数字,b的类型是浮点型

c = a+b

c

注:得到的c的类型为浮点型

d = np.exp(c*1j)

d

d.dtype.name

注:得到的是复数

许多一元操作,例如计算数组中所有元素的总和,都被实现为ndarray类的方法

a = np.random.random((2,3))

a

注:产生2行3列的随机数组(元素值为0-1之间的随机数)

a.sum()

注:将a数组所有元素求和

a.min()

注:返回a数组中最小的元素值

a.max()

注:返回a数组中的最大值

注意:我们看到的数组和单独取出的最大值保留的小数位数不同

默认情况下,这些操作适用于数组,就像它是数字列表一样,不管其形状如何。 但是,通过指定轴参数,您可以沿着数组的指定轴应用一个操作:

b = np.arange(12).reshape(3,4)

b

注:通过reshape将产生的1行的数组转变为3行4列

b.sum(axis=0)

注:将每一列求和,因为指定了参数axis = 0

b.sum(axis=1)

注:按行求和

b.sum()

注:不加axis参数则是所有元素求和

b.min(axis=1)

注:求每行的最小值

b.cumsum(axis=1)

注:要学会自己查帮助文件

?b.cumsum(axis=1)

是返回沿给定轴的元素的累加和

这是什么意思呢?画个图很好理解:

就是把前面所有的加上自己当前的值得到的结果放在当前位置,就是数列前n项累加和的意思

注意这里是按行累加

通用功能

NumPy提供熟悉的数学函数,如sin,cos和exp。 在NumPy中,这些被称为“通用函数”(ufunc)。 在NumPy中,这些函数在数组上以元素方式运算,产生一个数组作为输出。

B = np.arange(3)

B

注:创建一个数组

np.exp(B)

注:对每个元素求e的某次方

np.sqrt(B)

注:对每个元素开方

C = np.array([2., -1., 4.])

np.add(B, C)

注:将两个数组相加(要求数组形状相同)

如果形状不同,则会报错如下:

下图部分:

索引,切片和迭代

一维数组可以被索引,切片和迭代,非常像列表和其他Python序列。

a = np.arange(10)**3

a

注:对数组中每个元素求3次方

a[2]

注:取出序列为2的元素

a[2:5]

注:切片操作

a[:6:2] = -1000

a

注: 和 a[0:6:2] = -1000相同; 从最初到序列号6(6取不到),步长为2,将-1000赋值相应的元素。

a[ : :-1]

注:数组元素逆序排列

for i in a:

print(i**(1/3.))

注:对a数组中每个元素,求1/3次方

结果是nan的我有些不解,-10的3次方不是-1000么

于是我试了试:

希望有了解的大神留言评论指导一下,这个nan暂时跳过吧

多维数组每条轴可以有一个索引。 这些索引以逗号分隔的元组给出:

def f(x,y):

return 10*x+y

注:定义一个函数,参数有两个:x,y

b = np.fromfunction(f,(5,4),dtype=int)

b

注:我们看一下帮助:

?np.fromfunction

指的是,建立5行4列的数组,然后对每个位置元素(i,j)索引代表位置,例如(2,3)位置时,

计算函数值10*2+3=13,所以返回13,其他同理。

b[2,3]

注:我们可以取出数组中的元素值,注意行和列索引是用逗号分隔,而不是冒号(冒号是切片)

b[0:5, 1]

注:按照下标索引切片

b[ : ,1]

注:按照下标索引切片

b[1:3, : ]

注:按照下标索引切片

b[-1]

注:这个相当于b[-1,:]

一些省略记法:

例如五维的数组:x[1,2,...]与 x[1,2,:,:,:]等价

x[...,3] 与 x[:,:,:,:,3] 等价

x[4,...,5,:] 与 x[4,:,:,5,:]等价

c = np.array( [[[ 0, 1, 2],

[ 10, 12, 13]],

[[100,101,102],

[110,112,113]]])

c.shape

注:这是一个三维数组,并显示行、列、高的信息

注:等同于c[1,:,:] 或c[1],有点像切蛋糕的感觉,切出一片二维的。

c[...,2]

注:等同于c[:,:,2]、

相对于第一轴完成多维数组迭代:

for row in b:

print(row)

注:有点像三位数组降维成多个一维的感觉

但是,如果要对数组中的每个元素执行操作,可以使用flat属性,该属性是数组的所有元素的迭代器:

for element in b.flat:

print(element)

注:这是取出多维数组中所有元素的一个不错方法

下图部分:

对形状操作

改变数组的形状

a = np.floor(10*np.random.random((3,4)))

a

注:通过?np.floor()

我们只到,该方法是向下取整的意思

例如:

num = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])

np.floor(num)

向下取整就是指一个数字往减小的方向取到最近的值,例如上面例子的-1.7变成-2.0

所以这是产生随机整数的方法,但这里的数字是float不是int类型

可以通过各种命令改变阵列的形状。 请注意,以下三个命令都返回一个修改的新数组,不更改原始数组:

a.ravel()

注:将数组改成一维

a.reshape(6,2)

注:将数组转化为指定形状

a.T

注:数组转置,和矩阵转置一样理解

a.T.shape

矩阵转置之后的形状

a.shape

注:原来矩阵的形状

至此,numpy入门完成了一半,还有两篇完结,之后咱写可视化吧,哈哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值