如何创建一个由N个相同数值组成的numpy数组?

21

这肯定是一个简单的问题:

如何创建一个包含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])

6
numpy.repeat(3, 10) - Ashwini Chaudhary
2
或者 np.full(10, 3) - Alex Riley
@Ashwini Chaudhary,您肯定是指 repeat()(只有一个 'a');) - prodev_paris
为了更贴近 OP 的问题,我建议限制数组的类型:np.full(10, 3, dtype=np.int),否则可能会得到浮点数结果... - prodev_paris
3
很好的函数,我不知道它们,我总是使用类似 np.ones(10) * 3 的东西。 - Jan Kuiken
如果您在评论中使用了@AshwiniChaudhary的回复,请注意它应该是numpy.repeat(3,10)。那里有一个打错字,否则您将会得到一个错误。 - Behrouz Beheshti
7个回答

34

使用 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])

6

非常简单 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.])

6

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)

我发现它始终稍微快一点。


5

我知道这里没有使用numpy,但是使用Python基础语言非常简单。

data = [3]*10
print(data)
> [3, 3, 3, 3, 3, 3, 3, 3, 3, 3]

0
尝试这个。在我的 Python 版本(Python 3.9.6)中,它运行良好。
import numpy as np 
np.array([3]*10)

output: 

-1
在我看来,这是最简单的方法:
import numpy as np

arr = np.arange(0, 11)
arr[:] = 0

output:
[0 0 0 0 0 0 0 0 0 0 0]

你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

-1
我知道的最简单的方法就是使用以下代码创建一个数组:
np.ones(10) * n

如果你想要一个这样的功能,你可以随时创建一个类似这样的函数:
def num_array(n,q):
       np.ones(q) * n
       return

我很惊讶竟然没有看到有人给出类似的答案。

你没有仔细阅读。有一些推荐的技巧可以解答你的问题。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接