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

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

しかし正直なところ、初期化がボトルネックになることはめったにないため、代わりにゼロ行列に加算するか、1 行列を乗算する傾向があります。

于 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 に答える
2
foo = np.repeat(10, 50).reshape((5,10))

10 の 5x10 マトリックスを作成します。

于 2013-01-01T17:05:45.920 に答える