我有一个给定的数组“ a”,如下所示:
import numpy as np
a = np.arange(-100.0, 110.0, 20.0, dtype=float) #increase 20
a = np.tile(a, 4)
a = a.reshape(4,11)
[[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]
[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]
[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]
[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]]
从数组'a',我需要制作新的数组'b',如下所示:
[[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]
[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]
[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]
[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]]
实际上,数组“ b”是:
b = np.arange(100.0, -110.0, -20.0, dtype=float)
b = np.tile(b, 4)
b = b.reshape(4,11)
但是,在我的实际问题中,实际数据不是固定的,只有a的索引,即a [0,0]是固定的。因此,我必须通过使用索引重塑/重新排列其元素来从数组“ a”产生数组“ b”。
我尝试如下,但无法想象如何获得正确答案:
b = np.flipud(a)
print b
[[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]
[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]
[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]
[-100. -80. -60. -40. -20. 0. 20. 40. 60. 80. 100.]]
b = np.rot90(a,1)
print b
[[ 100. 100. 100. 100.]
[ 80. 80. 80. 80.]
[ 60. 60. 60. 60.]
[ 40. 40. 40. 40.]
[ 20. 20. 20. 20.]
[ 0. 0. 0. 0.]
[ -20. -20. -20. -20.]
[ -40. -40. -40. -40.]
[ -60. -60. -60. -60.]
[ -80. -80. -80. -80.]
[-100. -100. -100. -100.]]
哪些numpy函数适用于此问题?
您可以使用np.fliplr
:
b = np.fliplr(a)
print b
[[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]
[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]
[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]
[ 100. 80. 60. 40. 20. 0. -20. -40. -60. -80. -100.]]
此函数沿左右方向翻转阵列。
该文档还建议以下等效的分片操作:
a[:,::-1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句