24

如何创建一个数组,其中每个条目都是相同的值?我知道numpy.ones()numpy.zeros()为 1 和 0 执行此操作,但是呢-1

例如:

>>import numpy as np
>>np.zeros((3,3))
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])

>>np.ones((2,5))
array([[ 1.,  1.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  1.,  1.]])

>>np.negative_ones((2,5))
???
4

7 回答 7

25

使用np.full()如下:

np.full((2, 5), -1.)

回报:

array([[-1., -1., -1., -1., -1.],
       [-1., -1., -1., -1., -1.]])
于 2017-10-17T13:18:13.817 回答
21

我不知道是否有一个没有算术运算的好单行,但可能最快的方法是使用创建一个未初始化的数组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

但老实说,我倾向于添加到零矩阵或乘以一个矩阵,因为初始化很少是瓶颈。

于 2013-01-01T17:01:11.490 回答
8

-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.]]) 
于 2013-01-01T16:58:19.403 回答
3

对于 -1 的数组

-1 * np.ones((2,5))

简单地乘以常数。

于 2013-01-01T16:59:38.627 回答
3

怎么样:

[[-1]*n]*m

其中 n 是列数,m 是行数?

于 2017-10-14T20:21:36.373 回答
2
foo = np.repeat(10, 50).reshape((5,10))

将创建一个 10s 的 5x10 矩阵。

于 2013-01-01T17:05:45.920 回答
0

据我说,这些是创建具有指定值的数组的好方法

arr=[value for x in range(num)]

或者

[VALUE]*NUM

其中 num 是数组的长度 & value 是指定的值。

于 2021-09-01T04:51:38.443 回答