如何创建元素都等于指定值的数组?

2024-05-13 00:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如何创建每个条目都是相同值的数组?我知道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))
???

Tags: importnumpyasnponeszeros条目数组
3条回答

使用^{}如下:

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

返回:

array([[-1., -1., -1., -1., -1.],
       [-1., -1., -1., -1., -1.]])

我不知道是否有一个好的没有算术运算的一行程序,但最快的方法可能是使用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*np.one((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.]]) 

相关问题 更多 >