gpt4 book ai didi

python - 为什么 hstack() 复制数据而 hsplit() 在其上创建 View ?

转载 作者:太空狗 更新时间:2023-10-30 02:11:24 25 4
gpt4 key购买 nike

在 NumPy 中,为什么 hstack() 从堆叠的数组中复制数据:

A, B = np.array([1,2]), np.array([3,4])
C = np.hstack((A,B))
A[0]=99

C 提供:

array([1, 2, 3, 4])

hsplit() 在数据上创建了一个 View :

a = np.array(((1,2),(3,4)))
b, c = np.hsplit(a,2)
a[0][0]=99

b 提供:

array([[99],
[ 3]])

我的意思是 - 实现此行为背后的原因是什么(我发现它不一致且难以记住):我接受这种情况的发生是因为它是以这种方式编码的......

最佳答案

基本上,底层的 ndarray 数据结构只有一个指向其数据内存开始的指针,然后是关于如何在每个维度中移动的跨步信息。如果连接两个数组,它将不知道如何从一个内存位置移动到另一个内存位置。另一方面,如果将一个数组拆分为两个数组,每个数组都可以轻松存储指向第一个元素(位于原始数组内部某处)的指针。

基本的 C 实现是 here ,并且有一个很好的讨论:

http://scipy-lectures.github.io/advanced/advanced_numpy/index.html#life-of-ndarray

关于python - 为什么 hstack() 复制数据而 hsplit() 在其上创建 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616504/

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