如何创建一个每个条目都相同的数组?我知道numpy.ones()
和numpy.zeros()
为1和0执行此操作,但-1
怎么办?
例如:
>>import numpy as np
>>np.zeros((3,3))
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>np.ones((2,5))
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
>>np.negative_ones((2,5))
???
答案 0 :(得分:16)
我不知道是否有一个没有算术运算的漂亮单线程,但最快的方法可能是使用empty
创建一个未初始化的数组,然后使用.fill()
来设置值。为了比较:
>>> timeit m = np.zeros((3,3)); m += -1
100000 loops, best of 3: 6.9 us per loop
>>> timeit m = np.ones((3,3)); m *= -1
100000 loops, best of 3: 9.49 us per loop
>>> timeit m = np.zeros((3,3)); m.fill(-1)
100000 loops, best of 3: 2.31 us per loop
>>> timeit m = np.empty((3,3)); m[:] = -1
100000 loops, best of 3: 3.18 us per loop
>>> timeit m = np.empty((3,3)); m.fill(-1)
100000 loops, best of 3: 2.09 us per loop
但老实说,我倾向于添加零矩阵或者将那些矩阵相乘,因为初始化很少成为瓶颈。
答案 1 :(得分:9)
使用np.full()
,如下所示:
np.full((2, 5), -1.)
返回:
array([[-1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1.]])
答案 2 :(得分:7)
-1 * np.ones((2,5))
乘以矩阵中所需的数字就可以了。
In [5]: -1 * np.ones((2,5))
Out[5]:
array([[-1., -1., -1., -1., -1.],
[-1., -1., -1., -1., -1.]])
In [6]: 5 * np.ones((2,5))
Out[6]:
array([[ 5., 5., 5., 5., 5.],
[ 5., 5., 5., 5., 5.]])
答案 3 :(得分:3)
对于-1的数组
-1 * np.ones((2,5))
简单地乘以常数。
答案 4 :(得分:2)
foo = np.repeat(10, 50).reshape((5,10))
将创建一个10x的5x10矩阵。
答案 5 :(得分:0)
怎么样:
[[-1]*n]*m
其中n是列数,m是行数?