ऊबड़ सरणी आयाम


367

मैं वर्तमान में Numpy और Python सीखने की कोशिश कर रहा हूँ। निम्नलिखित सरणी को देखते हुए:

import numpy as np
a = np.array([[1,2],[1,2]])

क्या कोई फ़ंक्शन है जो आयामों को लौटाता है a(जैसे एक 2 बाय 2 एरे है)?

size() रिटर्न 4 और वह बहुत मदद नहीं करता है।


26
सलाह का एक टुकड़ा: आपके "आयाम" को shapeन्यूपी में कहा जाता है । क्या NumPy आपके मामले में आयाम को 2 कहता है, ( ndim)। सामान्य NumPy शब्दावली को जानना उपयोगी है: इससे डॉक्स पढ़ना आसान हो जाता है!
एरिक ओ लेबिगॉट

जवाबों:


498

यह है .shape:

ndarray। सरणी आयामों के आकार का आकार

इस प्रकार:

>>> a.shape
(2, 2)

25
नोट: इसे फ़ंक्शन की तुलना में विशेषता केshape रूप में अधिक सटीक रूप से वर्णित किया जा सकता है , क्योंकि यह फ़ंक्शन-कॉल सिंटैक्स का उपयोग करके नहीं किया गया है।
नोबार

17
@nobar वास्तव में यह एक संपत्ति है (जो कि एक विशेषता और कार्य दोनों है, वास्तव में)
wim

@ अधिक विशेष रूप से संपत्ति एक वर्ग है । वर्ग के गुणों के मामले में (एक संपत्ति जिसे आप अपनी कक्षा में रखते हैं), वे वर्ग की विशेषता के रूप में उजागर की गई संपत्ति के प्रकार हैं। एक विशेषता, अजगर में, डॉट के बाद का नाम है
पेड्रो रोड्रिग्स

2
यदि आप वास्तव में नाइटिक करना चाहते हैं, तो यह एक विवरणक है। हालाँकि यह propertyस्वयं एक वर्ग है, एक वर्ग ndarray.shapeनहीं है, यह संपत्ति के प्रकार का एक उदाहरण है।
wim

66

प्रथम:

सम्मेलन में, पायथन दुनिया में, के लिए शॉर्टकट numpyहै np:

In [1]: import numpy as np

In [2]: a = np.array([[1,2],[3,4]])

दूसरा:

Numpy में, आयाम , अक्ष / अक्ष , आकार संबंधित हैं और कभी-कभी समान अवधारणाएँ:

आयाम

में गणित / भौतिकी , आयाम या आयामी स्वरूप अनौपचारिक रूप से एक अंतरिक्ष के भीतर किसी भी बिंदु निर्दिष्ट करने के लिए की जरूरत निर्देशांक की न्यूनतम संख्या के रूप में परिभाषित किया गया है। लेकिन Numpy में , सुन्न डॉक्टर के अनुसार , यह अक्ष / अक्ष के समान है:

Numpy आयामों को अक्ष कहा जाता है। कुल्हाड़ियों की संख्या रैंक है।

In [3]: a.ndim  # num of dimensions/axes, *Mathematics definition of dimension*
Out[3]: 2

अक्ष / कुल्हाड़ियों

n वें सूचकांक करने के लिए एक समन्वय arrayNumpy में। और बहुआयामी सरणियों में प्रति धुरी एक सूचकांक हो सकता है।

In [4]: a[1,0]  # to index `a`, we specific 1 at the first axis and 0 at the second axis.
Out[4]: 3  # which results in 3 (locate at the row 1 and column 0, 0-based index)

आकार

प्रत्येक उपलब्ध अक्ष के साथ कितने डेटा (या रेंज) का वर्णन करता है।

In [5]: a.shape
Out[5]: (2, 2)  # both the first and second axis have 2 (columns/rows/pages/blocks/...) data

45
import numpy as np   
>>> np.shape(a)
(2,2)

यह भी काम करता है अगर इनपुट एक संख्यात्मक सरणी नहीं है लेकिन सूचियों की एक सूची है

>>> a = [[1,2],[1,2]]
>>> np.shape(a)
(2,2)

या टुपल्स का एक टुकड़ा

>>> a = ((1,2),(1,2))
>>> np.shape(a)
(2,2)

np.shapeयदि आकार की विशेषता नहीं है, तो पहले अपने तर्क को एक सरणी में बदल देता है, इसीलिए यह सूची और टुपल उदाहरणों पर काम करता है।
hululj

17

आप उपयोग कर सकते हैं

In: a = np.array([[1,2,3],[4,5,6]])
In: a.shape
Out: (2, 3)
In: a.shape[0] # x axis
Out: 2
In: a.shape[1] # y axis
Out: 3

9

आप .ndimआयाम के लिए और .shapeसटीक आयाम जानने के लिए उपयोग कर सकते हैं

var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]])

var.ndim
# displays 2

var.shape
# display 6, 2

आप .reshapeफ़ंक्शन का उपयोग करके आयाम बदल सकते हैं

var = np.array([[1,2,3,4,5,6], [1,2,3,4,5,6]]).reshape(3,4)

var.ndim
#display 2

var.shape
#display 3, 4

7

shapeविधि की आवश्यकता है aएक Numpy ndarray हो। लेकिन Numpy शुद्ध अजगर वस्तुओं के पुनरावृत्तियों के आकार की गणना भी कर सकता है:

np.shape([[1,2],[1,2]])

1

a.shapeका सिर्फ एक सीमित संस्करण है np.info()। इसकी जांच करें:

import numpy as np
a = np.array([[1,2],[1,2]])
np.info(a)

बाहर

class:  ndarray
shape:  (2, 2)
strides:  (8, 4)
itemsize:  4
aligned:  True
contiguous:  True
fortran:  False
data pointer: 0x27509cf0560
byteorder:  little
byteswap:  False
type: int32
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.