本文主要介绍一个简单的numpy数组拼接的例子,涉及numpy数组的介绍,numpy数组的属性等。有一定的参考价值,有需要的朋友可以参考一下。
NumPy array是一个名为ndarray的多维数组对象。它由两部分组成:
实际数据描述这些数据的元数据大多数操作只关注元数据,而不改变底层的实际数据。
关于NumPy数组,有几件事您必须知道:
NumPy数组的下标从0开始。同一NumPy数组中的所有元素必须是同一类型。NumPy数组属性
在详细介绍NumPy数组之前。首先,详细介绍NumPy数组的基本性质。NumPy数组的维数叫做秩,一维数组的秩是1,二维数组的秩是2,以此类推。在NumPy中,每个线性数组称为一个轴,秩实际上就是轴的个数。例如,一个二维数组相当于两个一维数组,其中第一个一维数组中的每个元素都是一维数组。所以一维数组是NumPy中的轴,第一个轴相当于底层数组,第二个轴是底层数组中的数组。而轴数是——秩,是数组的维数。
NumPy数组中ndarray对象的更重要的属性是:
1.ndarray.ndim:数组的维数(即数组轴的个数),等于秩。最常见的是二维数组(矩阵)。
2.ndarray.shape:数组的维度。是一个整数元组,表示每个维度中数组的大小。例如,在二维数组中,它表示数组的“行数”和“列数”。Ndarray.shape返回一个长度为维数的元组,即ndim属性。
3.ndarray.size:数组元素的总数,等于shape属性中元组元素的乘积。
4.ndarray.dtype:表示数组中元素类型的对象。您可以使用标准Python类型创建或指定dtype。或者,您可以使用前一篇文章中介绍的NumPy提供的数据类型。
5.ndarray.itemsize:数组中每个元素的字节大小。例如,元素类型为float64的数组itemsiz的属性值为8(float64占用64位,每个字节为8,因此64/8占用8个字节),另一个示例是元素类型为complex32的数组项,属性值为4(32/8)。
6.ndarray.data:包含实际数组元素的缓冲区。因为元素通常是通过数组的索引获得的,所以通常不需要使用该属性。
数组拼接方法一
思路:先把数组变成列表,然后用列表的拼接函数append()和extend()拼接,最后把列表变成数组。
示例1:
将numpy作为np导入
a=np.array([1,2,5])
b=np.array([10,12,15])
a_list=list(a)
b_list=list(b)
a _列表.扩展(b _列表)
a _列表
[1, 2, 5, 10, 12, 15]
a=np.array(a_list)
a
数组([ 1,2,5,10,12,15])
这种方法只适合简单的一维数组拼接。因为转换过程比较耗时,所以一般不建议拼接大量数据。
数组拼接方法二
Idea: numpy提供了numpy.append (arr,values,axis=none)函数。对于参数说明,要么是数组,要么是数值;可以用append直接拼接两个数组,而不是三个或更多数组。append函数总是返回一维数组。
示例2:
a=np.arange(5)
a
数组([0,1,2,3,4])
附加(a,10)
数组([ 0,1,2,3,4,10])
a
数组([0,1,2,3,4])
b=np.array([11,22,33])
b
数组([11,22,33])
附加(a,b)
数组([ 0,1,2,3,4,11,22,33])
a
数组([[1,2,3],
[4, 5, 6]])
b=np.array([[7,8,9],[10,11,12]])
b
数组([[ 7,8,9],
[10, 11, 12]])
附加(a,b)
数组([ 1,2,3,4,5,6,7,8,9,10,11,12])
Numpy的数组没有动态改变大小的功能。numpy.append()函数每次重新分配整个数组,并将原始数组复制到新数组中。
数组拼接方法三
想法:numpy提供了numpy.concatenate ((a1,a2,),axis=0)函数。它可以一次拼接多个阵列。其中a1,a2,是数组类型的参数。
示例3:
a=np.array([1,2,3])
b=np.array([11,22,33])
c=np.array([44,55,66])
NP。Concatenate ((a,b,c),axis=0) #默认情况下,axis=0可以不写。
Array ([1,2,3,11,22,33,44,55,66]) #对于一维数组拼接,axis的值不影响最终结果。
a=np.array([[1,2,3],[4,5,6]])
b=np.array([[11,21,31],[7,8,9]])
np.concatenate((a,b),axis=0)
数组([[ 1,2,3],
[ 4, 5, 6],
[11, 21, 31],
[ 7, 8, 9]])
NP。concatenate ((a,b),axis=1) # axis=1表示对应行的数组被拼接。
数组([[ 1,2,3,11,21,31],
[ 4, 5, 6, 7, 8, 9]])
比较numpy.append()和numpy.concatenate()函数的运行时间。
示例4:
从时间导入时钟为现在
a=np.arange(9999)
b=np.arange(9999)
时间1=现在()
c=np.append(a,b)
时间2=现在()
打印时间2-时间1
28.2316728446
a=np.arange(9999)
b=np.arange(9999)
时间1=现在()
c=np.concatenate((a,b),axis=0)
时间2=现在()
打印时间2-时间1
20.3934997107
可见concatenate()效率更高,适合大规模数据拼接。
总结
这就是本文中numpy数组拼接的简单示例。希望对你有帮助。感兴趣的朋友可以继续参考这个网站:
浅谈numpy数组的几种排序方式
Python编程给numpy矩阵添加一列方法示例
Python numpy生成矩阵、串联矩阵代码分享
如有不足之处,欢迎留言指出。感谢您对本网站的支持!