2015-03-09 7 views
5

मैं इसएक कॉलम को एक numpy सरणी में किसी मान द्वारा प्रतिस्थापित कैसे करें?

import numpy as np 

a = np.zeros((2,2), dtype=np.int) 

मैं मूल्य 1 से पहले कॉलम बदलना चाहते हैं की तरह एक सरणी है। मैंने निम्नलिखित किया:

a[:][0] = [1, 1] # not working 
a[:][0] = [[1], [1]] # not working 

विपरीत रूप से, जब मैं पंक्तियों को प्रतिस्थापित करता हूं तो यह काम करता है!

a[0][:] = [1, 1] # working 

मेरे पास एक बड़ी सरणी है, इसलिए मैं मूल्य से मूल्य को प्रतिस्थापित नहीं कर सकता।

+0

मैंने इसे सावधानी से नहीं पढ़ा। मैंने बस इसे देखा। – Jika

उत्तर

10

आप इस प्रकार पहले कॉलम की जगह ले सकता: का मतलब है

>>> a = np.zeros((2,2), dtype=np.int) 
>>> a[:, 0] = 1 
>>> a 
array([[1, 0], 
     [1, 0]]) 

यहाँ a[:, 0] "कॉलम 0 से सभी पंक्तियों का चयन करें"। मूल्य 1 इस चयनित कॉलम में प्रसारित किया गया है, वांछित सरणी का उत्पादन (यह सूची [1, 1] सूची का उपयोग करने के लिए आवश्यक नहीं है, हालांकि आप कर सकते हैं)।

आपका वाक्यविन्यास a[:][0] का अर्थ है "सरणी a से सभी पंक्तियों का चयन करें और फिर पहली पंक्ति का चयन करें"। इसी तरह, a[0][:] का अर्थ है "a की पहली पंक्ति का चयन करें और फिर इस पूरी पंक्ति को फिर से चुनें"। यही कारण है कि आप भी पंक्ति सफलतापूर्वक की जगह सकता है, लेकिन कॉलम नहीं है - यह अक्ष 1 के लिए चयन करने के लिए आवश्यक है, न सिर्फ अक्ष 0.

2

आप निम्नलिखित के रूप में कॉलम संख्या निर्दिष्ट करने की आवश्यकता:

>>> a[::,0]=1 
>>> a 
array([[1, 0], 
     [1, 0]]) 

numpy indexing बारे में अधिक पढ़ें।

2

आप कुछ इस तरह कर सकते हैं:

import numpy as np 

a = np.zeros((2,2), dtype=np.int) 
a[:,0] = np.ones((1,2), dtype=np.int) 

कृपया उल्लेख Accessing np matrix columns

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