<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: arcpy Array methods in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337251#M26456</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Maybe it is because we are all too casual with the difference between immutable and mutable objects in Python. The arrays are mutable, so assigning a new value does not work as expected.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
# classic example of mutabilty in action
a = ['spam', 'eggs', 100, 1234]
b = a
b.append("abc")

print a
# ['spam','eggs',100,1234,'abc'] # &amp;lt;&amp;lt; note that a is altered when we only appended to b
print b
# ['spam','eggs',100,1234,'abc']

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 15:58:23 GMT</pubDate>
    <dc:creator>KimOllivier</dc:creator>
    <dc:date>2021-12-11T15:58:23Z</dc:date>
    <item>
      <title>arcpy Array methods</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337246#M26451</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Has anyone else had problems with the Array class? I'm trying to do a sort on line segments that I have stored as arrays of points. All the Array methods seem to work fine except for insert and clone. Every time I use the insert method it appends.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Also does anybody have a working example of how to use the clone method?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Feb 2012 21:00:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337246#M26451</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2012-02-01T21:00:50Z</dc:date>
    </item>
    <item>
      <title>Re: arcpy Array methods</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337247#M26452</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;do you have a code example?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Feb 2012 21:20:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337247#M26452</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2012-02-01T21:20:46Z</dc:date>
    </item>
    <item>
      <title>Re: arcpy Array methods</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337248#M26453</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import arcpy

infc = "C:/Pipeline"

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)
featureList=[]
array = arcpy.Array()
point = arcpy.Point()

# Build polyline list
#
for row in rows:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; feat = row.getValue(shapefieldname)
&amp;nbsp;&amp;nbsp;&amp;nbsp; partnum = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; partcount = feat.partCount

&amp;nbsp;&amp;nbsp;&amp;nbsp; while partnum &amp;lt; partcount:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; part = feat.getPart(partnum)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt = part.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pntcount = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pntArray = arcpy.Array()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while pnt:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if pnt:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point = arcpy.Point()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point.X = pnt.X
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point.Y = pnt.Y
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point.ID = pnt.ID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point.Z = pnt.Z
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; point.M = pnt.M
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Create an array of points representing a line
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pntArray.add(point)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt = part.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pntcount += 1

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not pnt: 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pnt = part.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; partnum += 1

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Create a master array of point arrays in order to sort them
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.add(pntArray)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 

# Sort polyline array
#

pLineMax = array.count
dummyPoint = arcpy.Point()
dummyArray = arcpy.Array()

#Index for point arrays that needs comparison
pLineIndex = 0

while pLineIndex &amp;lt; pLineMax - 1:

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Index for point arrays that is a test comparison
&amp;nbsp;&amp;nbsp;&amp;nbsp; pLineIndex2 = pLineIndex + 2

&amp;nbsp;&amp;nbsp;&amp;nbsp; while pLineIndex2 &amp;lt; pLineMax - 1:

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Compare endpoint of line to endpoints of other lines
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempPoint1 = array[pLineIndex].getObject(array[pLineIndex].count-1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempPoint2 = array[pLineIndex2].getObject(0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempPoint3 = array[pLineIndex2].getObject(array[pLineIndex2].count-1)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # if endpoint matches another segment
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if str(tempPoint1) == str(tempPoint2):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Assign pointer to point array that needs to be moved
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pntArray = array.getObject(pLineIndex2)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Remove point array from master array
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.remove(pLineIndex2)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Insert point array in the appropriate place
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array.insert(pLineIndex + 1, pntArray)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Exit the while loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pLineIndex2 = pLineMax
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pLineIndex2 += 1

&amp;nbsp;&amp;nbsp;&amp;nbsp; pLineIndex +=1

&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The first part is copied from the help files and modified. I wrote this in PythonWin 2.6. I only have the sort for one end of the line segment so far.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm new to Python but I have some experience as a programmer.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you very much&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:58:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337248#M26453</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T15:58:21Z</dc:date>
    </item>
    <item>
      <title>Re: arcpy Array methods</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337249#M26454</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The only workaround I've found is to redraw the array of point arrays in the order I want. I know that the Array insert and replace methods expect a point or array object, and the clone method expects a point object. I can only think that the problem is that these methods aren't accepting the parameters as array or point objects, even though I built the arrays using arcpy.Array(), array.add(), and pntArray.add(), and I've built the points using arcpy.Point(). I'm passing the objects based as addresses retrieved by using the getObject method. It almost seems like the methods will only accept static objects and not dynamic objects, but isn't the array just a set of pointers?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Feb 2012 16:08:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337249#M26454</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2012-02-02T16:08:59Z</dc:date>
    </item>
    <item>
      <title>Re: arcpy Array methods</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337250#M26455</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Another bug, I think:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;p = arcpy.Point()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a = arcpy.Array()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a.add(p)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a.add(p)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a.add(p)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;p.X=11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a.replace(0,p) #so far so good&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;p.X=12&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a.replace(2,p) #but, they are both replaced&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;p2 = arcpy.Point() #however, if you make a new point...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;p2.X=42&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a.replace(2,p2)#...it goes only where expected&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you change an attribute of an existing point object, even the id, and then replace it somewhere, it will replace all the old instances in the array with the new attribute.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(So maybe it's not a bug?)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(just a little annoying)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jul 2012 21:01:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337250#M26455</guid>
      <dc:creator>RobFlemming</dc:creator>
      <dc:date>2012-07-18T21:01:49Z</dc:date>
    </item>
    <item>
      <title>Re: arcpy Array methods</title>
      <link>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337251#M26456</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Maybe it is because we are all too casual with the difference between immutable and mutable objects in Python. The arrays are mutable, so assigning a new value does not work as expected.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
# classic example of mutabilty in action
a = ['spam', 'eggs', 100, 1234]
b = a
b.append("abc")

print a
# ['spam','eggs',100,1234,'abc'] # &amp;lt;&amp;lt; note that a is altered when we only appended to b
print b
# ['spam','eggs',100,1234,'abc']

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:58:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/arcpy-array-methods/m-p/337251#M26456</guid>
      <dc:creator>KimOllivier</dc:creator>
      <dc:date>2021-12-11T15:58:23Z</dc:date>
    </item>
  </channel>
</rss>

