python的array数组_Python NumPy Array(数组) reshape

1、reshape array(数组)

reshape意味着更改数组的形状。

数组的形状是每个维度中的元素数量。

通过重塑(reshape),我们可以添加或删除维度或更改每个维度中的元素数量。

2、reshape 从 1-D 到 2-D

例如:

将以下具有12个元素的1-D数组转换为2-D数组。 最外面的维度将具有4个数组,每个数组包含3个元素:import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

3、reshape 从 1-D 到 3-D

例如:

将以下具有12个元素的1-D数组转换为3-D数组。 最外面的维度将具有2个数组,其中包含3个数组,每个数组包含2个元素:import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)

4、能reshape成任何形状吗?

是的,只要reshape所需的元素在两种形状中均相等。

可以将8个元素的一维数组reshape为4个元素的2行二维数组,但不能将其reshape为3个元素的3行二维数组,因为这需要3x3 = 9个元素。

例如:

尝试将具有8个元素的1D数组转换为每个维度中具有3个元素的2D数组(将产生错误):import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

5、返回 copy 或 view?

例如:

判断返回的数组是copy还是view:import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

上面的示例返回原始数组,因此它是一个view。

6、未知的维度

您可以使用一个"unknown"维度。

这意味着您不必在整形方法中为尺寸之一指定确切的数字。

传递-1作为值,NumPy将为您计算该数字。

例如:

将8个元素的1D数组转换为2x2元素的3D数组:import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

注意:我们不能将-1传递给多个维度。

7、展平数组

展平数组是指将多维数组转换为一维数组。

可以使用reshape(-1)来做到这一点。

例如:

将数组转换为一维数组:import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

注意:有很多功能可以更改numpy中的数组形状(shape)。flatten,ravel以及重新排列元素rot90,flip,fliplr,flipud等。这些属于numpy的“中级至高级”部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的reshape函数可以将一个数组或矩阵变换为指定的行数和列数,也可以将一个一维数组变成多维数组。下面是一个将一个二维数组变成三维数组的示例: ```python import numpy as np # 定义一个二维数组 arr2d = np.array([[1, 2], [3, 4], [5, 6]]) # 使用reshape将二维数组转化为三维数组 arr3d = arr2d.reshape((3, 1, 2)) print(arr3d) ``` 输出结果: ``` array([[[1, 2]], [[3, 4]], [[5, 6]]]) ``` 在这个示例中,我们首先定义了一个二维数组arr2d,然后使用reshape函数将其转化为一个三维数组arr3d。reshape函数的参数是一个元组,第一个元素表示新数组的行数,第二个元素表示新数组的列数,第三个元素表示新数组的深度。 如果要将多个二维数组合并成一个三维数组,可以使用numpy的concatenate函数。下面是一个示例: ```python import numpy as np # 定义两个二维数组 arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # 使用concatenate函数将两个二维数组合并成一个三维数组 arr3 = np.concatenate((arr1.reshape((1, 2, 2)), arr2.reshape((1, 2, 2))), axis=0) print(arr3) ``` 输出结果: ``` array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) ``` 在这个示例中,我们首先定义了两个二维数组arr1和arr2,然后使用reshape函数将它们转化为二维数组,再使用concatenate函数将它们合并成一个三维数组arr3。concatenate函数的第一个参数是一个元组,表示要合并的数组,第二个参数axis表示合并的方向。在这个示例中,我们使用axis=0表示沿着第一个维度合并,也就是将两个二维数组合并成一个三维数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值