簡體   English   中英

從字符串中提取數字,並對 numpy 列表進行排序

[英]Extracting numbers from a string, and ordering a numpy list

我有一個字符串,其中包含許多數字。 字符串如下:

['# Wavelength (m) ', 'Observation: 19909', 'Observation: 27028', 'Observation: 16652', 'Observation: 31458', 'Observation: 47548', 'Observation: 21100', 'Observation: 11768', 'Observation: 36969', 'Observation: 36656', 'Observation: 14915', 'Observation: 16766', 'Observation: 18197', 'Observation: 30915', 'Observation: 41090', 'Observation: 48054', 'Observation: 39451', 'Observation: 36999', 'Observation: 23674', 'Observation: 23095', 'Observation: 30768', 'Observation: 31991', 'Observation: 31544', 'Observation: 38008', 'Observation: 16076', 'Observation: 43937', 'Observation: 42251', 'Observation: 36537', 'Observation: 15338', 'Observation: 23522', 'Observation: 47565\n']

如何僅從此字符串中提取數字? 我希望能夠在之后按升序對這些數字進行排序。

另外,我有一個 numpy 列表如下:

v_list = [] # will store the velocities's in this list
#Between these lines of code there is a function defined which returns some parameters and does a calculation to work out the velocities
velocity_database=v_list.append(v_kms) # store velocity of the galaxy at the end of the growing list of velocities
print("The velocities are",v_list)

給出此控制台響應:

The velocities are [23776.307252936745, 29131.102361319136, 31615.49519071778, 17021.094456442446, 18172.375147257782, 31445.40515744717, 12649.6243034793, 14562.29510500802, 15974.290956463285, 16857.779678784023, 17837.097387347385, 20559.403621751506, 25351.46462858142, 20243.658821061777, 31645.67231184538, 23414.882588799854, 24994.813874811956, 32256.096602708625, 35258.16983158886, 26024.330289709895, 23181.488351828662, 17062.733161445263, 32680.9979695023, 21874.728746293586, 13398.338349854597, 19380.382584101142, 18428.479732444466, 19193.317697089064, 5364.615429193248, 11306.957725232642]

如何按升序打印具有這些速度的新列表?

簡單的列表理解。 根據您的要求轉換為intfloat

>>> obs = ['# Wavelength (m) ', 'Observation: 19909', 'Observation: 27028', 'Observation: 16652', 'Observation: 31458', 'Observation: 47548', 'Observation: 21100', 'Observation: 11768', 'Observation: 36969', 'Observation: 36656', 'Observation: 14915', 'Observation: 16766', 'Observation: 18197', 'Observation: 30915', 'Observation: 41090', 'Observation: 48054', 'Observation: 39451', 'Observation: 36999', 'Observation: 23674', 'Observation: 23095', 'Observation: 30768', 'Observation: 31991', 'Observation: 31544', 'Observation: 38008', 'Observation: 16076', 'Observation: 43937', 'Observation: 42251', 'Observation: 36537', 'Observation: 15338', 'Observation: 23522', 'Observation: 47565\n']
>>> obs = obs[1:]
>>> obs
['Observation: 19909', 'Observation: 27028', 'Observation: 16652', 'Observation: 31458', 'Observation: 47548', 'Observation: 21100', 'Observation: 11768', 'Observation: 36969', 'Observation: 36656', 'Observation: 14915', 'Observation: 16766', 'Observation: 18197', 'Observation: 30915', 'Observation: 41090', 'Observation: 48054', 'Observation: 39451', 'Observation: 36999', 'Observation: 23674', 'Observation: 23095', 'Observation: 30768', 'Observation: 31991', 'Observation: 31544', 'Observation: 38008', 'Observation: 16076', 'Observation: 43937', 'Observation: 42251', 'Observation: 36537', 'Observation: 15338', 'Observation: 23522', 'Observation: 47565\n']
>>> obs_nums = [int(item.split(' ')[1]) for item in obs]
>>> obs_nums
[19909, 27028, 16652, 31458, 47548, 21100, 11768, 36969, 36656, 14915, 16766, 18197, 30915, 41090, 48054, 39451, 36999, 23674, 23095, 30768, 31991, 31544, 38008, 16076, 43937, 42251, 36537, 15338, 23522, 47565]

同樣對於按升序打印,您可以簡單地按sort方法對列表進行sort

>>> obs_nums.sort()
>>> obs_nums
[11768, 14915, 15338, 16076, 16652, 16766, 18197, 19909, 21100, 23095, 23522, 23674, 27028, 30768, 30915, 31458, 31544, 31991, 36537, 36656, 36969, 36999, 38008, 39451, 41090, 42251, 43937, 47548, 47565, 48054]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM