Rocksolid Light

News from da outaworlds

mail  files  register  groups  login

Message-ID:  

Cold hands, no gloves.


comp / comp.lang.python / RE: Relatively prime integers in NumPy

SubjectAuthor
o RE: Relatively prime integers in NumPy<avi.e.gross

1
Subject: RE: Relatively prime integers in NumPy
From: <avi.e.gross@gmail.com>
Newsgroups: comp.lang.python
Date: Fri, 12 Jul 2024 23:57 UTC
References: 1 2 3 4 5
Path: eternal-september.org!news.eternal-september.org!feeder3.eternal-september.org!fu-berlin.de!uni-berlin.de!not-for-mail
From: <avi.e.gross@gmail.com>
Newsgroups: comp.lang.python
Subject: RE: Relatively prime integers in NumPy
Date: Fri, 12 Jul 2024 19:57:35 -0400
Lines: 179
Message-ID: <mailman.36.1720828658.2981.python-list@python.org>
References: <SA0PR09MB6363F3E6B493202E73869DF4DBDA2@SA0PR09MB6363.namprd09.prod.outlook.com>
<00e801dad3bf$473daed0$d5b90c70$@gmail.com>
<DM8PR09MB63603191F5509E5013D1BEDCDBA52@DM8PR09MB6360.namprd09.prod.outlook.com>
<DM8PR09MB636055F61171899BF14B01D3DBA62@DM8PR09MB6360.namprd09.prod.outlook.com>
<011801dad4b7$44a07100$cde15300$@gmail.com>
Mime-Version: 1.0
Content-Type: text/plain;
charset="UTF-8"
Content-Transfer-Encoding: base64
X-Trace: news.uni-berlin.de WnVfIeJ0fBCLyY3SoVkZfgg/0+FQx6dgmjX1lLL5aq0A==
Cancel-Lock: sha1:rM9rDjmNwFhwS9/5fQibpMi+lUk= sha256:b17np+0nPnL0ae0BvJIDo99nxQpYYr1DU6Qc4SHUDIc=
Return-Path: <avi.e.gross@gmail.com>
X-Original-To: python-list@python.org
Delivered-To: python-list@mail.python.org
Authentication-Results: mail.python.org; dkim=pass
reason="2048-bit key; unprotected key"
header.d=gmail.com header.i=@gmail.com header.b=UYr2cSZ7;
dkim-adsp=pass; dkim-atps=neutral
X-Spam-Status: OK 0.048
X-Spam-Evidence: '*H*': 0.90; '*S*': 0.00; 'looks': 0.02;
'explanation': 0.07; 'matches': 0.07; 'modules': 0.07; 'enough.':
0.09; 'indeed.': 0.09; 'mechanism': 0.09; 'much,': 0.09; 'numpy':
0.09; 'routine': 0.09; 'skip:z 20': 0.09; 'url-
ip:13.107.246.67/32': 0.09; 'url-ip:13.107.246/24': 0.09; '&gt;':
0.14; 'import': 0.15; 'url:mailman': 0.15; '2024': 0.16; '3:10':
0.16; 'divisors': 0.16; 'examples.': 0.16; 'far,': 0.16; 'loops':
0.16; 'numpy.': 0.16; 'numpy?': 0.16; 'patterns.': 0.16; 'prime':
0.16; 'procedure': 0.16; 'prompts': 0.16; 'relatively': 0.16;
'see\xc2\xa0': 0.16; 'skip:0 210': 0.16; 'sorry.': 0.16; 'step.':
0.16; 'url-ip:3.215/16': 0.16; 'url:urldefense': 0.16; 'url:v3':
0.16; 'using.': 0.16; '\xc2\xa0for': 0.16; '\xc2\xa0in': 0.16;
'python': 0.16; 'code.': 0.17; 'message-id:@gmail.com': 0.18;
'solve': 0.19; 'implement': 0.19; 'to:addr:python-list': 0.20;
'issue': 0.21; 'languages': 0.22; 'i.e.': 0.22; 'maybe': 0.22;
'code': 0.23; 'skip:- 10': 0.25; 'url:listinfo': 0.25; 'cannot':
0.25; 'programming': 0.25; '11,': 0.26; 'friday,': 0.26; 'else':
0.27; 'bit': 0.27; 'function': 0.27; 'done': 0.28; 'expect': 0.28;
'mostly': 0.28; 'purpose': 0.28; 'email addr:python.org&gt;':
0.28; 'example,': 0.28; 'module': 0.31; 'think': 0.32; 'question':
0.32; '(as': 0.32; 'collected': 0.32; 'needed,': 0.32; 'python-
list': 0.32; 'structure': 0.32; 'develop': 0.32; 'but': 0.32;
"i'm": 0.33; 'there': 0.33; 'someone': 0.34; 'appreciated.': 0.34;
'header:In-Reply-To:1': 0.34; 'received:google.com': 0.34;
'trying': 0.35; 'words': 0.35; 'following': 0.35;
'from:addr:gmail.com': 0.35; 'request': 0.35; 'addressed': 0.36;
'built': 0.36; 'those': 0.36; 'identify': 0.64; 'pass': 0.64;
'range': 0.64; 'our': 0.64; 'experience': 0.64; 'skip:r 20': 0.64;
'clear': 0.64; '8bit%:88': 0.64; '8bit%:93': 0.64; 'about.': 0.64;
'explained': 0.64; 'imagine': 0.64; 're:': 0.64; 'your': 0.64;
'top': 0.65; 'came': 0.65; 'hesitate': 0.65; 'well': 0.65;
'earlier': 0.67; 'numbers': 0.67; 'skip:n 30': 0.67; 'back': 0.67;
'outside': 0.67; 'url-ip:104.18/16': 0.67; 'url-ip:18/8': 0.67;
'url-ip:3/8': 0.67; '8bit%:69': 0.69; '8bit%:91': 0.69;
'8bit%:96': 0.69; '8bit%:99': 0.69; 'candidate': 0.69; 'compare':
0.69; 'enclosed': 0.69; 'factor': 0.69; 'latter': 0.69; 'skip:\xe2
20': 0.69; 'url:us': 0.69; '8bit%:43': 0.70; 'skip:\xe2 10': 0.71;
'8bit%:89': 0.75; '8bit%:92': 0.75; '8bit%:94': 0.75; '8bit%:78':
0.76; 'factors': 0.76; 'sent:': 0.78; 'highly': 0.78; '0in': 0.81;
'8bit%:95': 0.84; '8bit%:76': 0.84; '8bit%:97': 0.84; 'axis':
0.84; 'email name:&lt;python-list': 0.84; 'indices': 0.84; 'lot.':
0.84; 'popov': 0.84; 'skip:& 50': 0.84; 'skip:1 70': 0.84;
'url:--': 0.84; '8bit%:98': 0.91; 'skip:\xd0 10': 0.91;
'interest.': 0.93
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1720828655; x=1721433455; darn=python.org;
h=thread-index:content-language:mime-version:message-id:date:subject
:in-reply-to:references:to:from:from:to:cc:subject:date:message-id
:reply-to; bh=2xQrQqOCEFD30btZ76fQ+R+muzPTttbEQ7rm8C+JZMA=;
b=UYr2cSZ7yyczm91q4JF7S8GIgw11jiEnstBff+8qxx2sy0DmLm3PgFmDsZTJWxRfus
7FIN172iALNbV8k6RNRgwSdltFSKpIxAy8AXgie2YUTvjXGcbBwnNQquHVv3WyKH8EzH
K+RoG1RKWs097nFXETmZApi1Q/3kVvP2zD53+SMvIQ0p+aW1cHiY5Ubqd5Vqp3UQqMvo
j8oH+qVhUk0P1MC4N4yqQae2GcYtOAA/2OHt4asZNzgD5PMnlgUk+HA0PLrNOaeZcAf9
ddXnkOSnxbT8sDnvYsRciNUYvC9GBdlKYCj+e7PNjnJeW0u2FO1XxDPrlvxlfnQJT8Bg
jI7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1720828655; x=1721433455;
h=thread-index:content-language:mime-version:message-id:date:subject
:in-reply-to:references:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=2xQrQqOCEFD30btZ76fQ+R+muzPTttbEQ7rm8C+JZMA=;
b=h6knttlJui5AXAQRMc2xL1b4xg12Cq1ZWz6cxgE0h1InA4gAIkDkPYwJuZAZ6H8o4Z
lxX4spXPM2Od4K1igF1roRfA/NkgveoTChg+XaPGE2mYG3BVkmwqigxz9pRn0+ZMGdFn
ZKWOCO0PYIONrOpKwe82lZFpgI8qLfRy32W7a74lpgZGtlaj+ZwZ43yaIuqtPFD+Dbxz
zJgxWIOjubxoFXFifq3OC1MmT7I/2b2sylF4s2Hn2k6FNbTMAH+Gv678MB21/YbDu6MK
Q5reL+sDWd3cPh3sxP2YY1q7+KCU4HAXb+MROeWQmssyXZH/I4kxaCCkpwcqwHnez1vj
nkUA==
X-Forwarded-Encrypted: i=1;
AJvYcCXWPYBKa/ygsTwlfV1cgA2sYwlEqj0zywOYBrHMEnLU/lrj6V/df9ZVzr6BREGWc82N4FlAcKbWbC2d9XSYfaSqMiWxK2W1
X-Gm-Message-State: AOJu0YzN0eCfYPi+IeG9L4uXlfPw5SyvGYOoMDPywl5e1KCaCmKpxPSI
LPveYrVFZz4+ZSfh6Jw3XbTNpUTnhdGYVa2v/3q4iN4B+Oarso9g
X-Google-Smtp-Source: AGHT+IGblyodbF4vOCVcKDe5mYGbAtS4JXp4foYVXdkjbKTYuRdYT9+lObhzHZuc2HQCP4WHTFBUEQ==
X-Received: by 2002:a05:6214:19c8:b0:6b4:f761:f0b8 with SMTP id
6a1803df08f44-6b61bc7f095mr180647936d6.8.1720828654879;
Fri, 12 Jul 2024 16:57:34 -0700 (PDT)
In-Reply-To: <DM8PR09MB636055F61171899BF14B01D3DBA62@DM8PR09MB6360.namprd09.prod.outlook.com>
X-Mailer: Microsoft Outlook 16.0
Content-Language: en-us
Thread-Index: AQHaqdYQj6Isi+wDzs9EemRqPkPTEQJmM6ydAUtEEooBr5vKQbHIuiaQ
X-Content-Filtered-By: Mailman/MimeDel 2.1.39
X-BeenThere: python-list@python.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: General discussion list for the Python programming language
<python-list.python.org>
List-Unsubscribe: <https://mail.python.org/mailman/options/python-list>,
<mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive: <https://mail.python.org/pipermail/python-list/>
List-Post: <mailto:python-list@python.org>
List-Help: <mailto:python-list-request@python.org?subject=help>
List-Subscribe: <https://mail.python.org/mailman/listinfo/python-list>,
<mailto:python-list-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID: <011801dad4b7$44a07100$cde15300$@gmail.com>
X-Mailman-Original-References: <SA0PR09MB6363F3E6B493202E73869DF4DBDA2@SA0PR09MB6363.namprd09.prod.outlook.com>
<00e801dad3bf$473daed0$d5b90c70$@gmail.com>
<DM8PR09MB63603191F5509E5013D1BEDCDBA52@DM8PR09MB6360.namprd09.prod.outlook.com>
<DM8PR09MB636055F61171899BF14B01D3DBA62@DM8PR09MB6360.namprd09.prod.outlook.com>
View all headers

Dmitry,

I clearly did not understand what you wanted earlier as you had not made clear that in your example, you already had progressed to some level where you had the data and were now doing a second step. So, I hesitate to say much until either nobody else addressed the issue (as clearly some have) or you explain well enough.

I am guessing you have programming experience in other languages and are not as “pythonic” as some. The code you show may not be quite how others might do it. Some may write mch of your code as a single line of python using a list comprehension such as:

hkl_list = [ [h, k, l] for SOMETHING in RANGE for SOMETHING2 in RANGE2 for SOMETHING3 in RANGE3]

Where h, k. l come from the somethings.

Back to the real world.


From: Popov, Dmitry Yu <dpopov@anl.gov>
Sent: Friday, July 12, 2024 1:13 PM
To: avi.e.gross@gmail.com; 'Popov, Dmitry Yu via Python-list' <python-list@python.org>; oscar.j.benjamin@gmail.com; Popov, Dmitry Yu <dpopov@anl.gov>
Subject: Re: Relatively prime integers in NumPy

Thank you very much, Oscar.

Using the following code looks like a much better solution than my current Python code indeed.
np.gcd.reduce(np.transpose(a))
or
np.gcd.reduce(a,1)

The next question is how I can generate ndarray of h,k,l indices. This can be easily done from a Python list by using the following code.

import numpy as np
hkl_list=[]
for h in range(0, max_h):
      for k in range(0, max_k):
            for l in range(0, max_l):
                  hkl_local=[]
                  hkl_local.append(h)
                  hkl_local.append(k)
                  hkl_local.append(l)
                  hkl_list.append(hkl_local)
hkl=np.array(hkl_list, dtype=np.int64)
This code will generate a two-dimensional ndarray of h,k,l indices but is it possible to make a faster routine with NumPy?

Regards,
Dmitry



_____

From: Python-list <python-list-bounces+dpopov=anl.gov@python.org <mailto:python-list-bounces+dpopov=anl.gov@python.org> > on behalf of Popov, Dmitry Yu via Python-list <python-list@python.org <mailto:python-list@python.org> >
Sent: Thursday, July 11, 2024 2:25 PM
To: avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> <avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> >; 'Popov, Dmitry Yu via Python-list' <python-list@python.org <mailto:python-list@python.org> >
Subject: Re: Relatively prime integers in NumPy

Thank you for your interest. My explanation is too concise indeed, sorry. So far, I have used Python code with three enclosed 'for' loops for this purpose which is pretty time consuming. I'm trying to develop a NumPy based code to make this
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.

ZjQcmQRYFpfptBannerEnd
Thank you for your interest. My explanation is too concise indeed, sorry. So far, I have used Python code with three enclosed 'for' loops for this purpose which is pretty time consuming. I'm trying to develop a NumPy based code to make this procedure faster. This routine is kind of 'heart' of the algorithm to index of X-ray Laue diffraction patterns. In our group we have to process huge amount of such patterns. They are collected at a synchrotron radiation facility. Faster indexation routine would help a lot.

This is the code I'm currently using. Any prompts how to implement it in NumPy would be highly appreciated.

for h in range(0, max_h):
      for k in range(0, max_k):
            for l in range(0, max_l):
                  chvec=1
                  maxmult=2
                  if h > 1:                     
                        maxmult=h
                  if k > 1:
                        maxmult=k
                  if l > 1:
                        maxmult=l
                  if h > 1:
                        if maxmult > h:
                              maxmult=h
                  if k > 1:
                        if maxmult > k:
                              maxmult=k
                  if l > 1:
                        if maxmult > l:
                              maxmult=l
                  maxmult=maxmult+1
                  for innen in range(2, maxmult):
                        if h in range(0, (max_h+1), innen):
                              if k in range(0, (max_k+1), innen):
                                    if l in range(0, (max_l+1), innen):
                                          chvec=0
                  if chvec==1:
                        # Only relatively prime integers h,k,l pass to this block of the code


________________________________
From: avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> <avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> >
Sent: Thursday, July 11, 2024 1:22 PM
To: Popov, Dmitry Yu <dpopov@anl.gov <mailto:dpopov@anl.gov> >; 'Popov, Dmitry Yu via Python-list' <python-list@python.org <mailto:python-list@python.org> >
Subject: RE: Relatively prime integers in NumPy

Дмитрий, You may think you explained what you wanted but I do not see what result you expect from your examples. Your request is a bit too esoteric to be a great candidate for being built into a module like numpy for general purpose se but
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.

ZjQcmQRYFpfptBannerEnd

Дмитрий,

You may think you explained what you wanted but I do not see what result you
expect from your examples.

Your request is a bit too esoteric to be a great candidate for being built
into a module like numpy for general purpose se but I can imagine it could
be available in modules build on top of numpy.

Is there a reason you cannot solve this mostly outside numpy?

It looks like you could use numpy to select the numbers you want to compare,
then call one of many methods you can easily search for to see how to use
python to make some list or other data structure for divisors of each number
involved and then use standard methods to compare the lists and exact common
divisors. If needed, you could then put the results back into your original
data structure using numpy albeit the number of matches can vary.

Maybe a better explanation is needed as I cannot see what your latter words
about -1 and 1 are about. Perhaps someone else knows.




-----Original Message-----
From: Python-list <python-list-bounces+avi.e.gross=gmail.com@python.org <mailto:python-list-bounces+avi.e.gross=gmail.com@python.org> > On
Behalf Of Popov, Dmitry Yu via Python-list
Sent: Monday, July 8, 2024 3:10 PM
To: Popov, Dmitry Yu via Python-list <python-list@python.org <mailto:python-list@python.org> >
Subject: Relatively prime integers in NumPy

Dear Sirs.

Does NumPy provide a simple mechanism to identify relatively prime integers,
i.e. integers which don't have a common factor other than +1 or -1? For
example, in case of this array:
[[1,5,8],
[2,4,8],
[3,3,9]]
I can imagine a function which would return array of common factors along
axis 0: [1,2,3]. Those triples of numbers along axis 1 with the factor of1
or -1 would be relatively prime integers.

Regards,
Dmitry Popov

Argonne, IL
USA

--
https://urldefense.us/v3/__https://mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcVgUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$ <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcVgUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$-->
<https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcVgUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$-->
<https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcVgUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$-->
-- <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcVgUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$-->
https://urldefense.us/v3/__https://mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!avZA_RNHnI2aBy2E2Z3kwPCY3B4aDtoxObit540PzHeIW_4s1Tkkq5NapXL3KzGXv2BTWbYQJHf6AskeTC-IEA$ <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/python-list__;!!G_uCfscf7eWS!avZA_RNHnI2aBy2E2Z3kwPCY3B4aDtoxObit540PzHeIW_4s1Tkkq5NapXL3KzGXv2BTWbYQJHf6AskeTC-IEA$>


Click here to read the complete article
1

rocksolid light 0.9.8
clearnet tor