gpt4 book ai didi

Python NumPy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:34 25 4
gpt4 key购买 nike

我正在处理两个数组,试图像处理二维数组一样处理它们。我在 NumPy 中使用了很多矢量化计算。知道如何填充这样的数组:

X = [1, 2, 3, 1, 2, 3, 1, 2, 3]

或:

X = [0.2, 0.4, 0.6, 0.8, 0.2, 0.4, 0.6, 0.8, 0.2, 0.4, 0.6, 0.8, 0.2, 0.4, 0.6, 0.8]

忽略消息的第一部分。

我必须以网格的形式填充两个数组。但是网格尺寸因用户而异,这就是为什么我需要一个通用的表格。我整个上午都在努力,终于得到了我想要的。

如果我之前造成任何混淆,我深表歉意。英语不是我的母语,有时我很难解释事情。

这是为我完成工作的代码:

    myIter = linspace(1, N, N)
for x in myIter:
for y in myIter:
index = ((x - 1)*N + y) - 1
X[index] = x / (N+1)
Y[index] = y / (N+1)

用户输入N。X,Y的长度为N*N。

最佳答案

您可以使用函数 tile .来自示例:

>>> a = np.array([0, 1, 2])
>>> np.tile(a, 2)
array([0, 1, 2, 0, 1, 2])

使用此功能,您还可以像在其他答案中使用 reshape 一样立即 reshape 数组(通过定义“重复”是更多维度):

>>> np.tile(a, (2, 1))
array([[0, 1, 2],
[0, 1, 2]])

加法:以及内置函数 tile 和乘法之间速度差异的一些比较:

In [3]: %timeit numpy.array([1, 2, 3]* 3)
100000 loops, best of 3: 16.3 us per loop
In [4]: %timeit numpy.tile(numpy.array([1, 2, 3]), 3)
10000 loops, best of 3: 37 us per loop

In [5]: %timeit numpy.array([1, 2, 3]* 1000)
1000 loops, best of 3: 1.85 ms per loop
In [6]: %timeit numpy.tile(numpy.array([1, 2, 3]), 1000)
10000 loops, best of 3: 122 us per loop

编辑

您在问题中给出的代码的输出也可以实现如下:

arr = myIter / (N + 1)
X = numpy.repeat(arr, N)
Y = numpy.tile(arr, N)

这样你就可以避免循环数组(这是使用 numpy 的一大优势)。生成的代码更简单(如果您当然知道函数,请参阅 repeattile 的文档)并且速度更快。

关于Python NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681284/

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