import numpy as np
40 Manipulación de los arreglos de NumPy
En esta sección veremos cómo las funciones reshape y resize pueden transformar tus arreglos. Con reshape, aprenderás a reorganizar los elementos de tus arreglos manteniendo la misma cantidad de datos, permitiéndote moldearlos en nuevas formas sin perder información. Por otro lado, resize te da la flexibilidad de ajustar el tamaño de tus arreglos, expandiéndolos o recortándolos según sea necesario para adaptarse a tus requerimientos.
A medida que avances, entenderás no solo cómo utilizar estas herramientas, sino también cuándo es apropiado aplicar cada una. Esto te permitirá optimizar tu código y lograr una representación de datos que se alinee perfectamente con tus objetivos analíticos. Al concluir, tendrás un conocimiento profundo de las ventajas y limitaciones de reshape y resize, y estarás capacitado para seleccionar la opción más efectiva para la transformación de tus arreglos en NumPy, de acuerdo a tus necesidades específicas.
= np.arange(15)
m m
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
3,5) m.reshape(
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
5,3) m.reshape(
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
5,-1) m.reshape(
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
-1,5) m.reshape(
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
= np.random.randint(0,10,(3,3))
m m
array([[8, 6, 6],
[2, 6, 0],
[1, 3, 7]])
-1) m.reshape(
array([8, 6, 6, 2, 6, 0, 1, 3, 7])
= np.random.rand(100, 100, 3)
m m
array([[[0.28855083, 0.4448362 , 0.61105639],
[0.7594402 , 0.14146844, 0.8413415 ],
[0.35300805, 0.2530599 , 0.84439888],
...,
[0.32595989, 0.1228926 , 0.6839925 ],
[0.99648953, 0.73259549, 0.98159695],
[0.03416891, 0.11546777, 0.11983525]],
[[0.64285516, 0.65874085, 0.79734002],
[0.19508675, 0.16462806, 0.18633474],
[0.0213286 , 0.180198 , 0.00407577],
...,
[0.42301049, 0.19846789, 0.24196548],
[0.67581364, 0.20125892, 0.57831096],
[0.44928922, 0.56309199, 0.20275227]],
[[0.48089054, 0.41006477, 0.05447949],
[0.17197034, 0.05339118, 0.94235308],
[0.28689647, 0.03073413, 0.70833623],
...,
[0.66505441, 0.96197757, 0.62658938],
[0.77754461, 0.92295048, 0.93346172],
[0.08562233, 0.76890425, 0.40244845]],
...,
[[0.92479111, 0.77157321, 0.52865719],
[0.34680017, 0.72931384, 0.16745821],
[0.12111133, 0.63877138, 0.66058845],
...,
[0.76397128, 0.10724926, 0.5506581 ],
[0.62667808, 0.07396894, 0.75998114],
[0.57473675, 0.32789345, 0.97001736]],
[[0.788409 , 0.04008978, 0.21338734],
[0.3717173 , 0.31905299, 0.73703158],
[0.70945426, 0.66603974, 0.33342862],
...,
[0.09352969, 0.66174332, 0.52223439],
[0.5786852 , 0.54348558, 0.40490288],
[0.97791061, 0.34607812, 0.07059512]],
[[0.58027651, 0.66815292, 0.38162642],
[0.89692248, 0.98783247, 0.47255848],
[0.46729736, 0.34451034, 0.9494893 ],
...,
[0.99408918, 0.22895271, 0.15976376],
[0.56130945, 0.44999871, 0.23311172],
[0.80387757, 0.4984976 , 0.25365452]]])
= m.reshape(-1,3)
n n.shape
(10000, 3)
10,2) m.reshape(
ValueError: cannot reshape array of size 15 into shape (10,2)
10,2) m.resize(
ValueError: cannot resize an array that references or is referenced
by another array in this way.
Use the np.resize function or refcheck=False
10,2)) np.resize(m,(
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 0],
[ 1, 2],
[ 3, 4]])
m