![](/img/trans.png)
[英]What is the difference between resize and reshape when using arrays in NumPy?
[英]what is the difference between two following reshape function in numpy?
我正在构建一个神经网络。 我必须展平我的训练数据集。
我有两个选择。 1是:
train_x_flatten = train_x_orig.reshape(train_x_orig.shape[0], -1).T
第二个是:
train_x_flatten = train_x_orig.reshape(train_x_orig.shape[1]*train_x_orig.shape[2]*train_x_orig.shape[3], 209)
两者都给出了相同的形状,但我在计算成本时发现了差异? 这是为什么? 谢谢你
根据第二个示例,您的原始张量至少为 4 级。 第一个示例提取每个元素,通过增加最右边的索引进行排序,并将元素插入到第零个形状长度的行中。 然后转置。
第二个示例再次通过从最右边的索引递增来提取元素,即:
element = train_x_orig[0, 0, 0, 0]
new_row.append(element)
element = train_x_orig[0, 0, 0, 1]
new_row.append(element)
但行的大小不同。 它现在是张量中其他所有内容的维度。
这里有一个例子来说明。
首先,我们创建一个有序数组并将其重塑为排名 4。
import numpy as np
x = np.arange(36).reshape(3,2,3,2)
x
# returns:
array([[[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]],
[[[12, 13],
[14, 15],
[16, 17]],
[[18, 19],
[20, 21],
[22, 23]]],
[[[24, 25],
[26, 27],
[28, 29]],
[[30, 31],
[32, 33],
[34, 35]]]])
这是第一个例子的output
x.reshape(x.shape[0], -1).T
# returns:
array([[ 0, 12, 24],
[ 1, 13, 25],
[ 2, 14, 26],
[ 3, 15, 27],
[ 4, 16, 28],
[ 5, 17, 29],
[ 6, 18, 30],
[ 7, 19, 31],
[ 8, 20, 32],
[ 9, 21, 33],
[10, 22, 34],
[11, 23, 35]])
这是第二个例子
x.reshape(x.shape[1]*x.shape[2]*x.shape[3], -1)
# returns:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29],
[30, 31, 32],
[33, 34, 35]])
元素如何重新排序是根本不同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.