这肯定是一个简单的问题:
如何创建一个包含N个相同值的numpy数组?
例如,numpy.arange(10)
可以创建包含0到9中的10个整数值。
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
我想创建一个由10个相同整数值组成的numpy数组。
array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3])
使用 numpy.full()
:
import numpy as np
np.full(
shape=10,
fill_value=3,
dtype=np.int
)
> array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3])
非常简单 1)我们使用arange函数 :-
arr3=np.arange(0,10)
output=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
2) 我们使用 ones 函数来提供 1,之后我们将执行乘以 3:
arr4=np.ones(10)*3
output=array([3., 3., 3., 3., 3., 3., 3., 3., 3., 3.])
用 np.empty()
和 np.fill()
是一种(更快的)替代方法:
import numpy as np
shape = 10
value = 3
myarray = np.empty(shape, dtype=np.int)
myarray.fill(value)
时间比较
在我的计算机上,以上方法执行的时间为:
951 ns ± 14 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
使用np.full(shape=shape, fill_value=value, dtype=np.int)
相比于其他方法,更优秀的方面在于:
1.66 µs ± 24.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
使用np.repeat(value, shape)
执行的速度为:
2.77 µs ± 41.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
使用 np.ones(shape) * value
执行的时间为:
2.71 µs ± 56.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
我发现它始终稍微快一点。
我知道这里没有使用numpy,但是使用Python基础语言非常简单。
data = [3]*10
print(data)
> [3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
import numpy as np
np.array([3]*10)
output:
import numpy as np
arr = np.arange(0, 11)
arr[:] = 0
output:
[0 0 0 0 0 0 0 0 0 0 0]
np.ones(10) * n
def num_array(n,q):
np.ones(q) * n
return
numpy.repeat(3, 10)
- Ashwini Chaudharynp.full(10, 3)
。 - Alex Rileyrepeat()
(只有一个 'a');) - prodev_parisnp.full(10, 3, dtype=np.int)
,否则可能会得到浮点数结果... - prodev_parisnp.ones(10) * 3
的东西。 - Jan Kuiken