2017-10-24 22 views
6
i=np.arange(1,4,dtype=np.int) 
a=np.arange(9).reshape(3,3) 

औरnumpy सरणी लेखन त्रुटि: केवल पूर्णांक अदिश सरणियों एक अदिश सूचकांक

a 
>>>array([[0, 1, 2], 
      [3, 4, 5], 
      [6, 7, 8]]) 
a[:,0:1] 
>>>array([[0], 
      [3], 
      [6]]) 
a[:,0:2] 
>>>array([[0, 1], 
      [3, 4], 
      [6, 7]]) 
a[:,0:3] 
>>>array([[0, 1, 2], 
      [3, 4, 5], 
      [6, 7, 8]]) 

अब मैं सरणी vectorize उन सब को एक साथ मुद्रित करने के लिए करना चाहते हैं के लिए परिवर्तित किया जा सकता है। मैं

a[:,0:i] 

या

a[:,0:i[:,None]] 

कोशिश यह लेखन त्रुटि देता है: केवल पूर्णांक अदिश सरणियों एक अदिश सूचकांक

उत्तर

2

में बदला जा सकता -1 डी

को
a.reshape((1, -1)) 
अपने सरणी को बदलने के लिए निम्न प्रयास करें
+0

https://stackoverflow.com/questions/48513824/compute-mfcc-for-varying-time-intervals-based-on-time-stamps मुझे इसी तरह की त्रुटि है कि मैं इसे कैसे संबोधित करूं। –

2

संक्षिप्त उत्तर:

[a[:,:j] for j in i] 

तुम क्या करने कोशिश कर रहे हैं नहीं एक vectorizable आपरेशन है। एक सारिणी पर एक बैच आपरेशन के रूप में Wikipedia defines vectorization, बजाय व्यक्तिगत scalars पर की:

In computer science, array programming languages (also known as vector or multidimensional languages) generalize operations on scalars to apply transparently to vectors, matrices, and higher-dimensional arrays.

...

... an operation that operates on entire arrays can be called a vectorized operation...

सीपीयू स्तर के अनुकूलन के संदर्भ में, definition of vectorization है:

"Vectorization" (simplified) is the process of rewriting a loop so that instead of processing a single element of an array N times, it processes (say) 4 elements of the array simultaneously N/4 times.

अपने मामले के साथ समस्या यह है कि है प्रत्येक व्यक्तिगत ऑपरेशन के परिणाम में अलग-अलग आकार: (3, 1), (3, 2) और (3, 3) है। वे एक एकल वेक्टरकृत ऑपरेशन के आउटपुट का निर्माण नहीं कर सकते हैं, क्योंकि आउटपुट को एक संगत सरणी होना चाहिए। बेशक, इसमें (3, 1), (3, 2) और (3, 3) इसके अंदर सरणी (दृश्यों के रूप में) हो सकती है, लेकिन यह आपकी मूल सरणी a पहले से ही हो सकती है।

क्या तुम सच में की तलाश में हैं सिर्फ एक अभिव्यक्ति है कि उन सभी को गणना करता है:

[a[:,:j] for j in i] 

... लेकिन यह प्रदर्शन के अनुकूलन की भावना में vectorized नहीं है। हुड के तहत यह सादा पुराना for लूप है जो प्रत्येक आइटम को एक-एक करके गणना करता है।

+0

क्या आप कृपया मेरी मदद कर सकते हैं: https://stackoverflow.com/questions/48513824/compute-mfcc-for-varying-time-intervals-based-on-time-stamps –

संबंधित मुद्दे