gpt4 book ai didi

arrays - 在 Numpy 中创建不规则数字数组

转载 作者:行者123 更新时间:2023-12-01 19:51:52 24 4
gpt4 key购买 nike

在 Octave 中,如果我想创建一个包含不规则、非线性数字集的数组(例如 12,然后以 5 为步长从 20 到 95,然后以 10 为步长从 100 到 190,然后以 10 为步长从 200 到 500)步骤 25)我可以这样做:

octave:1> nxtals = [12, 20:5:95, 100:10:190, 200:25:500]
nxtals =
Columns 1 through 13:
12 20 25 30 35 40 45 50 55 60 65 70 75
Columns 14 through 26:
80 85 90 95 100 110 120 130 140 150 160 170 180
Columns 27 through 39:
190 200 225 250 275 300 325 350 375 400 425 450 475
Column 40:
500

Numpy/Python3 中是否有优雅的 Pythonic(也许是 NumPythonic)等效项?如果我在 Python 中创建范围列表,则会收到错误:

>>> q=[12, list(range(20, 50, 5)), list(range(50, 100, 10)),list(range(200,501,25))]
>>> numpy.array(q)
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
numpy.array(q)
ValueError: setting an array element with a sequence.

我怀疑我需要使用像 numpy.ravel() 这样的东西,但似乎无法让它工作。

最佳答案

Numpy 定义了一个名为 r_ 的对象可以做到这一点。它使用 __getitem__ 方法允许使用切片符号 start:stop:step 来组装序列,因此您可以使用方括号来代替调用它。例如:

In [1]: nxtals = np.r_[12, 20:100:5, 100:200:10, 200:525:25]

In [2]: nxtals
Out[2]:
array([ 12, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
80, 85, 90, 95, 100, 110, 120, 130, 140, 150, 160, 170, 180,
190, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475, 500])

关于arrays - 在 Numpy 中创建不规则数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com