攝影或3C

Python: 如何用numpy.ndarray的reshape 將3D array轉為2D array,再轉為pandas.DataFrame? arr.reshape(arr.shape[0]*arr.shape[1], -1)

import numpy as np
import pandas as pd

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
reshaped_arr = arr.reshape(arr.shape[0]*arr.shape[1], -1)
df = pd.DataFrame(reshaped_arr, columns=[‘column1’, ‘column2’])

reshaped_arr = arr.reshape(arr.shape[0]*arr.shape[1], -1)

arr.reshape(arr.shape[0]*arr.shape[1], -1) 

將3D的陣列轉換為2D的,其中第一維和第二維不變,

只是把第三維拉平並放到第二維上,

最後可以透過 pd.DataFrame() 轉換成DataFrame

推薦hahow線上學習python: https://igrape.net/30afN

在 NumPy 中使用 reshape 方法时,-1 用作一个特殊的参数,其作用是自动计算此维度的大小,以保证重塑后的数组能够包含与原数组相同数量的元素。

当你在 reshape 方法中使用 -1 时,NumPy 将自行计算这一维度应该有多少元素,从而保证总元素数量与原数组相同。这是一种便捷的方式,让你不需要手动计算每个维度的大小。

如何工作的?

假设你有一个数组的总元素数量是确定的,当你想改变这个数组的形状(即维度和每个维度的大小)时,你可以指定其中的一些维度,而用 -1 来让 NumPy 自动计算剩下的那个维度。NumPy 将会计算这个 -1 所在的维度应该有多少元素,使得重塑后的数组仍然保持原有的总元素数量不变。

例子

在這個例子中:

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
reshaped_arr = arr.reshape(arr.shape[0]*arr.shape[1], -1)

  • arr 是一个形状为 (2, 2, 2) 的数组,总共有 2*2*2 = 8 个元素。
  • 你想要将这个数组重塑成一个新的二维数组,其中第一个维度是 arr.shape[0]*arr.shape[1]2*2 = 4
  • 对于第二个维度,你使用了 -1。这告诉 NumPy:“我想要一个形状为 (4, X) 的数组,你来计算 X 应该是多少,以确保数组中有 8 个元素。”

NumPy 计算出 X 应该是 2,因为 4 * 2 = 8,这样可以保持元素总数不变。因此,reshaped_arr 的形状变为 (4, 2)

这种使用 -1 的方法特别有用,因为它避免了需要手动计算每个维度的大小,特别是在处理大型数组或者复杂的数组形状改变时。

推薦hahow線上學習python: https://igrape.net/30afN

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡