I want to generate a numpy array of the form:
0.5*[[0, 0], [1, 1], [2, 2], ...]
我希望最终的数组
dtype
是 numpy.float32
。以下是我的尝试:
>>> import numpy as np
>>> N = 5
>>> x = np.array(np.repeat(0.5*np.arange(N), 2), np.float32)
>>> x
array([ 0. , 0. , 0.5, 0.5, 1. , 1. , 1.5, 1.5, 2. , 2. ], dtype=float32)
这是一个好的方法吗?我可以通过仅进行类型转换来避免复制(如果确实是复制)吗?
0.5*np.arange(N, dtype=np.float32)
更改为np.arange(0, 0.5*N, 0.5, dtype=np.float32)
,以避免使用临时数组。 - Warren Weckessernp.linspace
正是出于这个原因。然而,在这种情况下,N
是一个整数,所以0.5*N
是精确的(除非N
非常大),并且arange
也可以。 (我也同意避免临时变量是微观优化,不太重要。) - Warren Weckesser