繁体   English   中英

Numpy重塑阵列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM