NumPy库(一):数组创建、切片、索引

numpy介绍

NumPy是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy是一个运行速度非常快的数学库,主要用于数组计算

从数值范围创建元组

arange()

numpy.arange(start,stop,step,dtype)

start起始值,默认为0
stop终止值(不包含)
step步长,默认为1
dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型
实例:

// An highlighted block
import numpy as np
x=np.arange(10,20,2,dtype=complex)
print(x)
#输出结果    [10.+0.j 12.+0.j 14.+0.j 16.+0.j 18.+0.j]

linspace()

numpy.linspace函数用于创建一个一维数组,数组是一个等差数列构成的

np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

start序列的起始值
stop序列的终止值,
如果endpoint为true,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为true时,数列中包含stop值,反之不包含,默认是True。
retstep如果为True时,生成的数组中会显示间距,反之不显示。
dtypendarray的数据类型

// 实例
import numpy as np
a=np.linspace(1,10,10,retstep=True)
print(a)
#输出结果   (array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.]), 1.0)

logspace()

numpy.logspace函数用于创建一个等比数列

np.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)

start序列的起始值为:base * * startstop
序列的终止值为:base**stop。如果endpoint为true,该值包含于数列中
base对数log的底数。

// 实例
import numpy as np
a=np.logspace(0,9,10,base=2)
print(a)
#输出结果  [  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

numpy.asarray()

从已有数组创建新的数组或者矩阵

numpy.asarray(a,dtype=None,order=None)

a任意形式的输入参数,可以是,列表,列表的元组,元组,元组的元组,元组的列表
多维数组dtype数据类型,可选
order可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序

#将嵌套列表转换为矩阵(二维ndarray)
import numpy as np
x=[(1,2,3),(4,5)]
a=np.asarray(x)
print(a)
print(a.shape)
print(a[0])
'''
输出结果
[(1, 2, 3) (4, 5)]
(2,)
(1, 2, 3)
'''

numpy.empty()

numpy.empty方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组

numpy.empty(shape,dtype=float,order='C')

shape数组形状(维度)
dtype数据类型,可选
order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

import numpy as np
x=np.empty([3,2],dtype=int)
print(x)
'''
输出
[[-1092971664 -2008948015]
 [  489906992         462]
 [  489906992         462]]
'''
数组元素为随机值,因为它们未初始化

0矩阵和全1矩阵

函数介绍
numpy.zeros(shape,dtype=float,order=‘C’)创建全0数组
numpy.ones(shape,dtype=None,order=‘C’)创建全1数组

单位对角阵

numpy.eye()方法创建单位矩阵创建指定对角元为1,其他元素为0的二维数组即单位矩阵
下面展示一些 内联代码片

numpy.ones(N,M=None,k=0,dtype=float,order='C')

N数组形状
M可选,默认矩阵为方阵
参数k指定元素为1的对角线,k=0表示主对角,k为正表示上三角的第k条对角,k为负表示下三角的第|k|条对角

import numpy as np
A=np.eye(4)
print(A)
B=np.eye (4,k =1)#上三角的第一条对角线全为1,其他元素为0
print(B)
'''
输出
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
[[0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]
 [0. 0. 0. 0.]]

'''

numpy.diag()

创建对角矩阵或取矩阵对角元素

下面展示一些 内联代码片

numpy.diag(v,k=0)

v列表、元组或矩阵
k指定对角线位置。

import numpy as np
A=np.diag([1,2,3])#创建三角矩阵
print(A)
a=np.diag(A)#取对角元素
print(a)
b=np.diag([[1,2,3],[4,5,6],[7,8,9]])#取对角元素
print(b)
'''
输出
[[1 0 0]
 [0 2 0]
 [0 0 3]]
[1 2 3]
[1 5 9]
'''

数组切片与索引

ndarray对象的内容可以通过索引或切片来访问和修改,与Python中list的切片操作一样。ndarray数组可以基于0-n的下标进行索引,切片对象可以通过内置的slice函数,并设置start,stop及step参数进行,从原数组中切割出一个新数组

行或列索引切片


[行索引的开始:行索引的结束,列索引的开始:列索引的结束]

高级索引

实例:获取二维数组中(0,0),(1,1)和(2,0)位置处的元素

// 获取二维数组中(0,0),(1,1)和(2,0)位置处的元素
import numpy as np
A=np.array([[1,2],[3,4],[5,6]])
y=A[[0,1,2],[0,1,0]]
print(y)
'''
结果
[1 4 5]
'''

布尔索引(筛选)

实例:获取大于5的元素

//实例:获取大于5的元素
import numpy as np
x=np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
print('我们的数组是:',x)
print('\n')
print('大于5的元素是:')
print(x[x>5])
'''
输出
我们的数组是: [[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]


大于5的元素是:
[ 6  7  8  9 10 11]
'''

传入索引筛选数组

// An highlighted block
import numpy as np
x = np.arange(32).reshape((8, 4))
print(x)
print(x[[4, 2, 1, 7]])
'''
输出
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]
 [28 29 30 31]]
[[16 17 18 19]
 [ 8  9 10 11]
 [ 4  5  6  7]
 [28 29 30 31]]
'''
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kilig*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值