导入numpy第三方库
import numpy as np
多维数组
numpy中的多维数组是numpy.ndarray类类型的对象,可用于表示数据结构中的任意维度的数组;numpy中的创建的数组在内存中时连续的
创建数组
np.arrange(起始,终止,步长):创建一维数组
np.array(任何可以被解释为数组的容器)
改变数组类型
ndarray.dtype属性表示元素的数据类型。通过dtype参数和astype()方法可以指定和修改元素的数据类型。
np.array(可迭代对象,dtype = nunpy数据类型) #指定创建数组的数据类型
a = np.array([1,2,3],dtype = 'float') #
a = a.astype(np.int) #改变数组类型,注意必须进行重新赋值才可以完全改变数据类型
#a.astype(np.int) 并不能改变数据类型
查看和改变数组维度
narray.shape:查看数组类型
narray.reshape(新的维度) #改变数组的维度
narray.ravel() #将数组展开为一维数组
narr.flatten() #将数组展开为一维数组
narray.T #数组的转置
narray.transpose() #数组的转置
a = np.arange(1, 9)
#array([1, 2, 3, 4, 5, 6, 7, 8])
b = a.reshape(2, 4)
'''
# array([[1, 2, 3, 4],
# [5, 6, 7, 8]])
'''
c = b.reshape(2, 2, 2)
'''
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
'''
d = c.ravel()
# array([1, 2, 3, 4, 5, 6, 7, 8])
e = c.flatten()
# array([1, 2, 3, 4, 5, 6, 7, 8])
f = b.reshape(2, 2, 2).copy() #内容的深拷贝
'''
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
'''
a = np.arange(1,9)
a.reshape(2,4)
#array([[1, 2, 3, 4],
# [5, 6, 7, 8]])
g = a.transpose()
#array([[1, 5],
# [2, 6],
# [3, 7],
# [4, 8]])
f = a.T
#array([[1, 5],
# [2, 6],
# [3, 7],
# [4, 8]])
数组索引和切片使用
数组索引的访问规则
数组[索引]
数组[行索引][列索引]
数组[页索引][行索引][列索引]
数组[页索引, 行索引, 列索引]
a = np.array([[[1, 2],[3, 4]], [[5, 6],[7, 8]]]) #a为3*3*3数组
a[0]相当于a
# [[1, 2],[3, 4]]
a[0][0]相当于a[0,0]
# [1,2]
a[0][0][0] 相当于a[0,0,0]
#1
数组的切片规则
数组[起始:终止:步长, 起始:终止:步长, ...] #对每个维度的操作使用','号隔开,切片的起始和终止和步长使用':'隔开
数组的组合和拆分
垂直组合拆分
numpy.vstack((上, 下))
numpy.vsplit(数组, 份数)->子数组集合
垂直方向上的合并指的是添加垂直维度,而不是垂直拼接
垂直方向拆分,指的是将垂直维度拆分为子矩阵
一般来讲是将按照页索引拆分和组合
a = np.arange(11, 20).reshape(3, 3)
b= np.arange(21,30).reshape(3,3)
'''
array([[11, 12, 13],
[14, 15, 16],
[17, 18, 19]])
array([[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
'''
c = np.stack((a,b)) #c为2*3*3的矩阵,
'''
array([[[11, 12, 13],
[14, 15, 16],
[17, 18, 19]],
[[21, 22, 23],
[24, 25, 26],
[27, 28, 29]]])
'''
a, b = np.vsplit(c, 2) #
水平拆分和组合
numpy.hstack((左, 右))
numpy.hsplit(数组, 份数)->子数组集合
在行索引方向上合并和拆分
c = np.hstack((a,b))
'''
c.shape = (3,6)
array([[11, 12, 13, 21, 22, 23],
[14, 15, 16, 24, 25, 26],
[17, 18, 19, 27, 28, 29]])
'''
a, b = np.hsplit(c, 2)
深度拆分和组合
numpy.dstack((前, 后))
numpy.dsplit(数组, 份数)->子数组集合
利用原数组内容添加列索引或者按照列索引拆分
c = np.dstack((a, b))
'''
array([[[11, 21],
[12, 22],
[13, 23]],
[[14, 24],
[15, 25],
[16, 26]],
[[17, 27],
[18, 28],
[19, 29]]])
'''
a, b = np.dsplit(c, 2)
array([[[11],
[12],
[13]],
[[14],
[15],
[16]],
[[17],
[18],
[19]]])
array([[[21],
[22],
[23]],
[[24],
[25],
[26]],
[[27],
[28],
[29]]])
行列组合和拆分
numpy.column_stack((左, 右))
numpy.row_stack((上, 下))
与数组的简单拼接