[英]Numpy reshaping array
我在下面再现了一个数组,当我绘制它时,我得到一个锯齿波,我正在寻找一个方波输出,即当第二列中第11个值的值减小时。 我正在寻找一种方法来做到这一点,而无需每次手动重塑。
例如我有这个:
[[ 0. 0. ]
[ 0. 0.1]
[ 0. 0.2]
[ 0. 0.3]
[ 0. 0.4]
[ 0. 0.5]
[ 0. 0.6]
[ 0. 0.7]
[ 0. 0.8]
[ 0. 0.9]
[ 0.1 0. ]
[ 0.1 0.1]
[ 0.1 0.2]
[ 0.1 0.3]
[ 0.1 0.4]
[ 0.1 0.5]
[ 0.1 0.6]
[ 0.1 0.7]
[ 0.1 0.8]
[ 0.1 0.9]
我要这个:
[[ 0. 0. ]
[ 0. 0.1]
[ 0. 0.2]
[ 0. 0.3]
[ 0. 0.4]
[ 0. 0.5]
[ 0. 0.6]
[ 0. 0.7]
[ 0. 0.8]
[ 0. 0.9]
[ 0.1 0.9]
[ 0.1 0.8]
[ 0.1 0.7]
[ 0.1 0.6]
[ 0.1 0.5]
[ 0.1 0.4]
[ 0.1 0.3]
[ 0.1 0.2]
[ 0.1 0.1]
[ 0.1 0.0]
如果第一列在数组的下半部分保持不变:
my_array[10:] = my_array[10:][::-1]
或者如果您的数组不是固定大小:
my_array[my_array.shape[0]/2:] = my_array[my_array.shape[0]/2:][::-1]
如果你有一个指定的ymin, ymax, ystep
,你可以这样做:
import numpy as np
ymin, ymax, ystep = 0, 1, 0.1
z = np.arange(ymin, ymax, ystep)
x = np.repeat(z, len(z))
y = np.tile(np.tile((z, z[::-1]), (1, 1)).flatten(), len(z)/2)
arr = np.vstack((x, y)).T
>>>arr[:20]
array([[ 0. , 0. ],
[ 0. , 0.1],
[ 0. , 0.2],
[ 0. , 0.3],
[ 0. , 0.4],
[ 0. , 0.5],
[ 0. , 0.6],
[ 0. , 0.7],
[ 0. , 0.8],
[ 0. , 0.9],
[ 0.1, 0.9],
[ 0.1, 0.8],
[ 0.1, 0.7],
[ 0.1, 0.6],
[ 0.1, 0.5],
[ 0.1, 0.4],
[ 0.1, 0.3],
[ 0.1, 0.2],
[ 0.1, 0.1],
[ 0.1, 0. ]])
#keeps going
#...
#[0.9, 0.9],
#...
#[0.9, 0. ]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.