欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Numpy 模块中的ndarray 对象属性、数组、合并和拆分

最编程 2024-10-11 21:26:45
...

一、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编程软件的熟练。