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