Numpy - 更简单的方法来更改数组的一列值?

时间:2014-05-23 15:06:21

标签: python arrays numpy

我想制作一个二维数组,其中一列保持不变,另一列与linspace不同。

这有效,但看起来有点笨重:

np.hstack((np.tile(45,(21,1)), np.array([np.linspace(55,65,21)]).T))

[[ 45.   55. ]
 [ 45.   55.5]
 [ 45.   56. ]
 [ 45.   56.5]
 [ 45.   57. ]
 [ 45.   57.5]
 [ 45.   58. ]
 [ 45.   58.5]
 [ 45.   59. ]
 [ 45.   59.5]
 [ 45.   60. ]
 [ 45.   60.5]
 [ 45.   61. ]
 [ 45.   61.5]
 [ 45.   62. ]
 [ 45.   62.5]
 [ 45.   63. ]
 [ 45.   63.5]
 [ 45.   64. ]
 [ 45.   64.5]
 [ 45.   65. ]]

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

这看起来更干净,但我没有看到太多的优势:

x = np.empty((21, 2))
x[:, 0] = 45
x[:, 1] = np.linspace(55, 65, x.shape[0])

答案 1 :(得分:1)

不是很好,但我会做的

>>> a = np.full((21, 2), 45.0)
>>> a[..., 1] = np.linspace(55, 65, a.shape[0])
>>> a
array([[ 45. ,  55. ],
       [ 45. ,  55.5],
       [ 45. ,  56. ],
       [ 45. ,  56.5],
       [ 45. ,  57. ],
       [ 45. ,  57.5],
       [ 45. ,  58. ],
       [ 45. ,  58.5],
       [ 45. ,  59. ],
       [ 45. ,  59.5],
       [ 45. ,  60. ],
       [ 45. ,  60.5],
       [ 45. ,  61. ],
       [ 45. ,  61.5],
       [ 45. ,  62. ],
       [ 45. ,  62.5],
       [ 45. ,  63. ],
       [ 45. ,  63.5],
       [ 45. ,  64. ],
       [ 45. ,  64.5],
       [ 45. ,  65. ]])
>>>