आमतौर पर लोग पहली पंक्ति के रूप में "पहला बैंड" वाक्यांश करते हैं।
>>> arr = np.array([[6,7,8],[1,2,3],[1,2,3]])
#First need a complex datatype.
>>> arr = arr.astype(np.complex)
>>> arr
array([[ 6.+0.j, 7.+0.j, 8.+0.j],
[ 1.+0.j, 2.+0.j, 3.+0.j],
[ 1.+0.j, 2.+0.j, 3.+0.j]])
# .imag and .real access the real and imaginary parts of the array.
>>> arr[1:].imag = arr[0].real
>>> arr
array([[ 6.+0.j, 7.+0.j, 8.+0.j],
[ 1.+6.j, 2.+7.j, 3.+8.j],
[ 1.+6.j, 2.+7.j, 3.+8.j]])
कई कास्टिंग कॉल छोड़ा जा रहा है और vstack समय भी पर्याप्त मात्रा में बचा सकते हैं: बड़े विन्यास के लिए
arr = np.array([[6,7,8],[1,2,3],[1,2,3]])
%timeit a=arr.astype(np.complex);a[1:].imag = a[0].real
100000 loops, best of 3: 4.03 µs per loop
%timeit np.vstack((arr[0,:], arr[1:,:] + arr[0,:] * 1.j))
10000 loops, best of 3: 25.2 µs per loop
:
arr = np.random.rand(500,500)
%timeit a=arr.astype(np.complex);a[1:].imag = a[0].real
1000 loops, best of 3: 898 µs per loop
In [13]: %timeit np.vstack((arr[0,:], arr[1:,:] + arr[0,:] * 1.j))
1000 loops, best of 3: 1.77 ms per loop
अंतर मुख्य रूप से vstack
विकल्प के लिए होने से आता है एक जटिल डेटा प्रकार के लिए दो बार कास्ट करें।
%timeit arr.astype(np.complex)
1000 loops, best of 3: 530 µs per loop
इसे सरल बनाया जा सकता है: 'np.vstack ((a [0], a [1:] + a [0] * 1.j))'। – Daniel
अच्छा बिंदु, आम तौर पर मैं सभी आयाम दिखाना चाहता हूं हालांकि अनावश्यक है। – jabaldonedo