1.手动创建数组
准备工作:
查看np.array的帮助文档
import numpy as np
np.array?
手动创建1维数组
a=np.array([1,2,3,4,5])
手动创建2维数组
b=np.array([[1,2],[3,4]])
c=np.array([1,2,3,4],ndim=2)
常用属性说明
属性 | 说明 |
---|---|
dtype | 返回数组中元素的类型 |
shape | 返回由整数组成的元组,元组中的每个整数依次对应数组的每个轴的元素个数 |
size | 返回一个整数,代表数组中元素的个数 |
ndim | 返回一个整数,代表数组的轴的个数,即维度 |
nbytes | 返回一个整数,代表用于保存数据的字节数 |
#一维数据
a=np.array([1,2,3,4,5])
print(a.dtype) #int32
print(a.shape)#(5,)
print(a.size)#5
print(a.ndim)#1
#二维数据
b=np.array([[1,2],[3,4]])
print(b.dtype) #int32
print(b.shape)#(2,2,)
print(b.size)#4
print(b.ndim)#2
c=np.array([1,2,3,4],ndmin=2)
print(c.dtype) #int32
print(c.shape)#(1,4)
print(c.size)#4
print(c.ndim)#2
2.函数创建数组
函数 | 说明 |
---|---|
arange | 根据开始值、结束值和步长,创建一个数组 |
ones | ones根据指定的形状(以元组方式指定)和元素类型,创建元素值为1的数组 |
zeros | 元素值都是0 |
empty | 没有填充任何元素数据,但分配了内存空间 |
eye、identity | 创建对角线元素是1、其余为0的二维数组 |
diag | 创建对角线元素是指定数值、其余是0的二维数组 |
linspace | 根据开始值、结束值和元素数量创建元素是等差数列的数组 |
logspace | 根据开始值、结束值、元素数量和对数底创建元素是等比数列的数组 |
np.arange(1,30,3)
np.ones((1,5))
np.eye(4)
np.identity(4)
np.diag([1,2,3,4])
np.diag([1,2,3,4],k=1)
np.linspace(1,10,3)
np.logspace(2,3,4)
3.数组的索引
根据索引(下标)获取数组元素
3.1下标是整数
#一维数据
b = np.linspace(0, 100, 5)#array([ 0., 25., 50., 75., 100.])
print(b[3])#75
print(b[-3])#50
#二维数据
c = np.logspace(1, 3, 12).reshape(3, 4)
#array([[ 10. , 15.19911083, 23.101297 , 35.11191734],
# [ 53.36699231, 81.11308308, 123.28467394, 187.38174229],
# [ 284.80358684, 432.87612811, 657.93322466, 1000. ]])
c[1]#array([ 53.36699231, 81.11308308, 123.28467394, 187.38174229])
c[1][2]#123.28467394420659
c[1,2]#123.28467394420659
c[(1,2)]#123.28467394420659
3.2下标是列表
b = np.linspace(0, 100, 5)#array([ 0., 25., 50., 75., 100.])
b[[1,3]]#array([25., 75.])
b[1]#25.0
b[(1)]#25.0
b[[1]]#array([25.])
c = np.logspace(1, 3, 12).reshape(3, 4)
#array([[ 10. , 15.19911083, 23.101297 , 35.11191734],
# [ 53.36699231, 81.11308308, 123.28467394, 187.38174229],
# [ 284.80358684, 432.87612811, 657.93322466, 1000. ]])
c[1]#array([ 53.36699231, 81.11308308, 123.28467394, 187.38174229])
c[[0,2]]#第0轴的0、2行
#array([[ 10. , 15.19911083, 23.101297 , 35.11191734],
#[ 284.80358684, 432.87612811, 657.93322466, 1000. ]])
c[[0,2],[1,2]]#第0轴的0行,2行,第1轴的1列,2列
#array([ 15.19911083, 657.93322466])
3.3下标是数组
c = np.logspace(1, 3, 12).reshape(3, 4)
c[np.array([1,2])]
#array([[ 53.36699231, 81.11308308, 999. , 187.38174229],
# [ 284.80358684, 432.87612811, 657.93322466, 1000. ]])
c[np.array([1, 2]), np.array([0, 1])]
#array([ 53.36699231, 432.87612811])
4.数组的切片
#一维数组
a = np.arange(10, 20)#array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
a[2:8]#前包含后不包含
#array([12, 13, 14, 15, 16, 17])
#二维数组
b = np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)
#array([[ 0, 1, 2, 3, 4, 5],
# [10, 11, 12, 13, 14, 15],
# [20, 21, 22, 23, 24, 25],
# [30, 31, 32, 33, 34, 35],
# [40, 41, 42, 43, 44, 45],
# [50, 51, 52, 53, 54, 55]])
b[1:4]
#array([[10, 11, 12, 13, 14, 15],
# [20, 21, 22, 23, 24, 25],
# [30, 31, 32, 33, 34, 35]])
b[1:4,2:5]
#array([[12, 13, 14],
# [22, 23, 24],
# [32, 33, 34]])
b[1:]
#array([10, 11, 12, 13, 14, 15])
b[1]
#array([10, 11, 12, 13, 14, 15])
b[::2,::2]
#array([[ 0, 2, 4],
# [20, 22, 24],
# [40, 42, 44]])
b[:3,[0,3]]
#array([[ 0, 3],
# [10, 13],
# [20, 23]])