使用零和五个创建一个numpy数组(10x1)

时间:2015-02-07 16:26:19

标签: python arrays numpy

我无法弄清楚如何创建一个10x1 numpy数组,前3个元素中的数字为5,其他7个元素的数字为0.有关如何有效地执行此操作的任何想法?

6 个答案:

答案 0 :(得分:4)

最简单的似乎是:

import numpy as np

the_array = np.array([5]*3 + [0]*7)

这种简单的方法是否会为您的目的带来一些特定的不利因素?

当然有很多替代方案,例如

the_array = np.zeros((10,))
the_array[:3] = 5

如果您需要多次重复此特定操作,因此速度上的微小差异很重要,您可以对各种方法进行基准测试,以查看可能保存纳秒级的位置。但前提是不太可能我不建议为这个具体问题做这件事,即使我是timeit的忠实粉丝: - )。

答案 1 :(得分:2)

我认为Alex Martelli提出的方法是最清晰的,但是这里使用np.repeat的另一种方法对于构造具有重复值的数组非常有用:

>>> np.repeat([5, 0], [3, 7])
array([5, 5, 5, 0, 0, 0, 0, 0, 0, 0])

所以在这里,传递值[5, 0]的列表以及重复列表[3, 7]。在返回的NumPy数组中,值列表的第一个元素5重复3次,第二个元素0重复7次。

答案 2 :(得分:0)

Alex和ajcr都有有用的答案,但要记住的一件事是你期望的数据类型需要什么。

例如,

np.zeros会抛出一个浮点数,而另外两个答案会抛出一个int。

您当然可以使用' astype'方法:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.astype.html

答案 3 :(得分:0)

只需执行以下操作。

import numpy as np

arr = np.zeros(10)

arr[:3] = 5

答案 4 :(得分:0)

import numpy as np
np.repeat([5,0],[3,7]).reshape(10,1)

答案 5 :(得分:-1)

import numpy as np

array = np.zeros(10)
print("An array of zeros : ")
print (array)

array = np.ones(10)
print("An array of ones : ")
print (array)

array = np.ones(10)*5
print("An array of fives : ")
print (array)