numpy数组修改形状函数
NumPy是一个功能强大的Python框架,提供了对于科学计算和数据分析的各种工具和功能。其中,numpy数组是NumPy的基础数据结构,它提供了存储和处理大规模数据的便捷方法。修改数组的形状是numpy中很重要的一部分,这样可以对数据结构进行优化,使它们更加适于需要的计算。在本文中,我们将探讨numpy数组的修改形状函数。
1. reshape()函数
reshape()函数是numpy数组中最常用的修改形状的函数之一。此函数将现有的数组重新排列成具有新维度的新数组,同时保持数据数目不变。shape()函数的格式如下:
shape(array, newshape[, order='C'])
参数说明:
array:是一个numpy数组,它将被重整并转换为新数组。
newshape:是一个元组或整数来指定输出数组的新形状。如果为整数,则结果数组将为单个
行/列的数量。
order:结果的元素采用何种方式进行存储。可以选择按行优先'F',按列优先'C'以及不遵循任何顺序。默认值为'C'。
示例:
在本示例中,我们将使用numpy函数arange()来创建一个简单的numpy数组,然后使用reshape()函数将其转换为不同形状的新数组。
代码:-
import numpy as np
arr = np.arange(12) print("原始的numpy数组:\n",arr)
#reshape函数 new_arr = shape(3, 4) print("\n重整后的numpy数组:\n",new_arr)
new_arr1 = shape(2, 6) print("\n重整后的numpy数组:\n",new_arr1)
new_arr2 = shape(6, 2) print("\n重整后的numpy数组:\n",new_arr2)
输出:-
原始的numpy数组: [ 0 1 2 3 4 5 6 7 8 9 10 11]
重整后的numpy数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
重整后的numpy数组: [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]]
重整后的numpy数组: [[ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9] [10 11]]
如上所示,reshape()函数被使用来重整一个numpy数组。在上面的示例中,我们使用reshape()函数来将原始数组['0 1 2 3 4 5 6 7 8 9 10 11']转换为以下新数组:
3行4列数组,如[[ 0 1 2 3 ] [ 4 5 6 7 ] [ 8 9 10 11 ]]。
2行6列数组,如[[ 0 1 2 3 4 5 ] [ 6 7 8 9 10 11 ]]。
6行2列数组,如[[ 0 1 ] [ 2 3 ] [ 4 5 ] [ 6 7 ] [ 8 9 ] [ 10 11 ]]。
2. flat函数
flatten()函数是另一个将多维NumPy数组转化为一维NumPy数组的函数。该函数返回一个迭代器,该迭代器可用于访问数组元素。如果我们删除将多维数组转化的函数,则该名称为flat()。相反,此函数采用带有一个bool类型参数的签名('F'表示以列的方式展平数组,'C'表示以行的方式展平数组)。默认值为'F'。
numpy.flatten(order='C')
参数说明:
order:是一个字符串,表示展开后的数组的元素存储按什么方式进行存储,即按行('C')还是按列('F').
示例:
在下面的示例中,我们使用flatten()函数来展开一个2维数组,将它转换为一个1维数组。
代码:-
numpy库中出数组的唯一值
import numpy as np
arr = np.array([[1, 2], [3, 4]]) print("原始数组:\n", arr)
#flatten函数 new_arr = arr.flatten() print("\n重整后的数组:\n", new_arr)
输出:-
原始数组: [[1 2] [3 4]]
重整后的数组: [1 2 3 4]
如上所示,我们在原始数组[[1 2] [3 4]]上使用flatten()函数,以创建新的1维numpy数组[1 2 3 4]。
3. ravel函数
此函数将多维NumPy数组展平,并以与flatten()相同的顺序返回一个一维数组。ravel()函数执行类似于flatten()函数的操作,但仍然有一些区别。在numpy数组中,ravel()函数并不会在
内存中创建一个新的数组,而是返回一个numpy数组的视图。这意味着,如果你在返回视图后修改数据,它也会在原始数组上进行修改。而Flatten()函数,如果您在返回的副本中进行了更改,则不会影响原始数组中的数据。
numpy.ravel(a, order='C')
参数说明:
a:需要展开的数组;
order:重排列数组内部元素时采取何种方式。选项包括'C','F'。
示例:
在下面的示例中,我们将使用ravel()函数来展开具有多个维度的NumPy数组。
代码:-
import numpy as np
arr = np.array([[1, 2], [3, 4]]) print("原始数组:\n", arr)
#ravel函数 new_arr = arr.ravel() print("\n拉直后的数组:\n", new_arr)
输出:-
原始数组: [[1 2] [3 4]]
拉直后的数组: [1 2 3 4]
如上所示,我们使用ravel()函数将原始数组[[1 2] [3 4]]转换为新数组[1 2 3 4]。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论