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