有什么方法可以使用 Numpy 数组创建软引用或类似指针的对象吗?

Is there any way to make a soft reference or Pointer-like objects using Numpy arrays?

我想知道是否有一种方法可以将多个不同数组中的数据引用到一个数组中,而不用复制它。

示例:

import numpy as np
a = np.array([2,3,4,5,6])
b = np.array([5,6,7,8])

c = np.ndarray([len(a)+len(b)])

offset = 0
c[offset:offset+len(a)] = a
offset += len(a)
c[offset:offset+len(b)] = b

但是,在上面的例子中,c是一个新的数组,所以如果你修改ab的一些元素,它不会在[=11]中被修改=] 完全没有。

我希望 c 的每个索引(即 c[0]c[1] 等)都引用 a 和 [=13= 的每个元素],但就像一个指针,没有对数据进行 deepcopy

正如@Jaime 所说,您不能生成一个新数组,其内容指向多个现有数组中的元素,但您可以做相反的事情:

import numpy as np

c = np.arange(2, 9)
a = c[:5]
b = c[3:]
print(a, b, c)
# (array([2, 3, 4, 5, 6]), array([5, 6, 7, 8]), array([2, 3, 4, 5, 6, 7, 8]))

b[0] = -1

print(c,)
# (array([ 2,  3,  4, -1,  6,  7,  8]),)

我认为您所要求的根本问题是 numpy 数组必须由连续的内存块支持,该内存块可以是 regularly strided 以便将内存地址映射到各个数组元素。

在您的示例中,ab 将分配在不相邻的内存块中,因此无法使用一组步幅来寻址它们的元素。