创建一个数组
a = np.array([1,3,1,4,5,2,1])
print(a) [1 3 1 4 5 2 1] == 》 [1 3 1 4 5 2 1]
b = np.array((1,3,1,4,5,2,1))
print(b) ==》 [1 3 1 4 5 2 1]
c = np.arange(x)
print(c) == 》 [0 1 2 3 …… x-1]
np.arange(Start , End , Num)
== 》 创建一个以“Start”为起始,“End“为结尾的有“Num”个数的数组
d = np.linspace(Start , End , Num)
== 》 创建一个以“Start”为起始,“End“为结尾的有“Num”个数的数组
数组的维度
2D(二维)数组:列表的列表(或者是一个序列的序列)
3D(三维)数组:列表的列表的列表
4D(四维)数组:列表的列表的列表的列表
以此类推……
数组的切片
print(a[行,列]) 对2D数组进行切片
print(a[0, 1:4]) # >>>[12 13 14]
print(a[1:4, 0]) # >>>[16 21 26]
print(a[::2,::2]) # >>>[[11 13 15]
# [21 23 25]
# [31 33 35]]
print(a[:, 1]) # >>>[12 17 22 27 32]
数组的各种属性
首先定义数组a
print(type(a))
== 》 返回数组a的类型
print(a.shape)
== 》返回数组a的形状,即行与列的数量
print(a.itemsize)
== 》 返回数组a每个项所占用的字节数
print(a.ndim)
== 》 返回数组a的维度数
print(a.nbytes)
== 》 返回数组a中所有数据消耗掉的字节数
数组的使用
基本操作符
使用“+”,“-”,“*”,“/”;来对数组进行四则运算,这些操作符都是对数组进行逐元素运算。
它将每一个元素进行配对,然后对它们进行运算,返回结果为一个数组。
而使用“>”,“<”的时候,返回的将是一个布尔型数组
dot()函数用于计算两个数组的点积,它的返回值是一个标量,而非一个数组。
数组的点积计算方法:
数组特殊运算符
a.sum()
==》将数组a中的所有元素相加
a.min()
==》返回数组a的最小元素
a.max()
==》 返回数组a中的最大元素
索引进阶
花式索引
# Fancy indexing
a = np.arange(0, 100, 10)
indices = [1, 5, -1]
b = a[indices]
print(a)
# ==》 [ 0 10 20 30 40 50 60 70 80 90]
print(b)
# ==》 [10 50 90]
布尔屏蔽
布尔屏蔽可以根据我们指定的条件检索数组中的元素
import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(0, 1 , 50)
b = np.cos(a)
plt.plot(a,b)
mask = b >= 0.3
plt.plot(a[mask], b[mask], 'r')
mask = (b >= 0.3) & (a <= 0.5)
plt.plot(a[mask], b[mask], 'g')
plt.show()
运行结果如下:
缺省索引
a = arange(0,100,10)
b -a[a >= 50]
print(b)
# ==》 [50 60 70 80 90]
Where函数
Where函数用于返回数组中的值,返回值为一个列表。
a = np.arange(0,100,10)
b = np.where(a < 50)
c = np.where(a >= 50)[0]
print(b)
# ==》 (array([0, 1, 2, 3, 4], dtype=int64),)
print(c)
# ==》 [5 6 7 8 9]
(部分素材取自Numpy中文网)