一、ndarray对象属性介绍
说明:ndim属性返回数组的维度,即数组有多少个轴。例如,一维数组的ndim为1,二维数组的ndim为2,以此类推。
示例1:
# coding:utf-8
import numpy as np
w=np.array([[1,2,3],[4,5,6],[1,5,9]])
print(w)
print("轴个数为:",w.ndim) # 二维数组
print("形状为:",w.shape) # 三行三列
print("元素个数为:",w.size)
print("每个元素的字节大小:",w.itemsize)
输出:
示例2:
s=np.array([[1,2,3],[4,5,6]])
# 这个数组两行三列,通过shape改变形状
s.shape=3,2
print(s)
输出:
二、数组重塑
(1)既然shape可以改变数组的形状,那么对于定义好的数组,也是可以通过reshape方法改变其数据维度。
格式:np.reshape(a,newshape, order='C')
说明:a代表需要处理的数组,newshape代表新维度。
# 数组重塑
n=np.arange(8) # 创建一个一维数组
m=np.reshape(n,(2,4)) # 转化成一个二维数组
print('n是:\n',n)
print('m是:\n',m)
输出:
(2)数组重塑有一个参数可以为-1,这样表示为-1的那个参数由自动确认,比如:
n=np.arange(8) # 创建一个一维数组
m1=np.reshape(n,(-1,2)) # 转化成一个两列的二维数组,几行由数组本身自动判断
m2=np.reshape(n,(2,-1)) # 转化成一个两行二维数组,几列由数组本身自动判断
print('m1是:\n',m1)
print('m2是:\n',m2)
输出:
三、数组合并
介绍三种合并函数:
1.hstack函数:实现横向合并。
示例:
# coding:utf-8
import numpy as np
a = np.arange(6)
b1 = np.reshape(a, (3, 2))
b2 = b1 * 2
print("b是:\n", b1)
print("b2是:\n", b2)
print("横向合并以后是:\n", np.hstack((b1, b2)))
输出:
2.vstack函数:实现纵向组合是利用vstack将数组纵向合并。
示例:
# coding:utf-8
import numpy as np
a = np.arange(6)
b1 = np.reshape(a, (3, 2))
b2 = b1 * 2
print("b是:\n", b1)
print("b2是:\n", b2)
print("纵向合并以后是:\n", np.vstack((b1, b2)))
输出:
3.concatenate函数:可以实现数组的横向或纵向合并,参数axis=1时进行横向合并,axis=0时进行纵向合并。
示例:
# coding:utf-8
import numpy as np
a = np.arange(6)
b1 = np.reshape(a, (3, 2))
b2 = b1 * 2
print("b是:\n", b1)
print("b2是:\n", b2)
print("横向合并以后是:\n", np.concatenate((b1, b2),axis=1))
print("纵向合并以后是:\n", np.concatenate((b1, b2),axis=0))
输出与1、2相同。
四、数组分割
与数组合并相反,hsplit函数、vsplit函数和split函数分别实现数组的横向、纵向和指定方向的分割。如下:
1.hsplit函数横向分割
示例:
# coding:utf-8
import numpy as np
a = np.arange(8) # 生成0~15的一维数组
b1 = np.reshape(a, (2, 4)) # 变换成2行4列的二维数组
b2 = b1 * 2
b3=np.hstack((b1, b2)) #横向合并以后
print("横向合并以后是:\n", b3)
# 横向分割后
b4=np.hsplit(b3,2)
print("参数为2,从上到下砍一刀,分成两份,横向分割以后是:\n",b4)
2.vsplit函数纵向分割
示例:
# coding:utf-8
import numpy as np
a = np.arange(8) # 生成0~15的一维数组
b1 = np.reshape(a, (2, 4)) # 变换成2行4列的二维数组
b2 = b1 * 2
b3=np.hstack((b1, b2)) #横向合并以后
print("横向合并以后是:\n", b3)
# 纵向分割后
b5=np.vsplit(b3,2)
print("参数为2,从左到右砍一刀,分成两份,纵向分割以后是:\n",b5)
3.split函数指定方向分割:split在参数axis=1时实现数组的横向分割,axis=0时则进行纵向分割。
示例:
# coding:utf-8
import numpy as np
a = np.arange(8) # 生成0~15的一维数组
b1 = np.reshape(a, (2, 4)) # 变换成2行4列的二维数组
b2 = b1 * 2
b3=np.hstack((b1, b2)) #横向合并以后
print("横向合并以后是:\n", b3)
print("参数为2,从上到下砍一刀,分成两份,横向分割以后是:\n",b4)
print("参数为2,从左到右砍一刀,分成两份,纵向分割以后是:\n",b5)
——以上代码可以自主运行,以增强自己对python编程软件的熟练。