gpt4 book ai didi

python - 附加到 numpy 数组

转载 作者:行者123 更新时间:2023-12-05 08:54:46 26 4
gpt4 key购买 nike

我正在尝试构造一个 numpy 数组,然后向其附加整数和另一个数组。我试过这样做:

xyz_list = frag_str.split()
nums = numpy.array([])
coords = numpy.array([])
for i in range(int(len(xyz_list)/4)):
numpy.append(nums, xyz_list[i*4])
numpy.append(coords, xyz_list[i*4+1:(i+1)*4])
print(atoms)
print(coords)

打印输出只给出我的空数组。这是为什么?此外,我如何重写 coords 以允许我拥有这样的二维数组:array[[0,0,0],[0,0,1],[ 0,0,-1]]?

最佳答案

numpy.append 与 python 的 list.append 不同,它不会原地执行操作。因此,您需要将结果分配回一个变量,如下所示。

import numpy

xyz_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
nums = numpy.array([])
coords = numpy.array([])

for i in range(int(len(xyz_list)/4)):
nums = numpy.append(nums, xyz_list[i*4])
coords = numpy.append(coords, xyz_list[i*4+1:(i+1)*4])

print(nums) # [ 1. 5. 9.]
print(coords) # [ 2. 3. 4. 6. 7. 8. 10. 11. 12.]

您可以按如下方式 reshape 坐标:

coords = coords.reshape(3, 3)

# array([[ 2., 3., 4.],
# [ 6., 7., 8.],
# [ 10., 11., 12.]])

有关numpy.append 行为的更多详细信息

Documentation :

Returns: A copy of arr with values appended to axis. Note that append does not occur in-place: a new array is allocated and filled.

如果您事先知道 numpy 数组输出的形状,则通过 np.zeros(n) 进行实例化并稍后用结果填充它会很有效。

另一种选择:如果您的计算大量使用插入元素到数组的左侧,请考虑使用collections.deque。来自标准库。

关于python - 附加到 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48697381/

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