view()
a=arange(0,10)
b = a.view()
view()创建了数组a的一个视图,视图是数组的浅拷贝,具有与a相同的属性和数据的地址,共同引用同一块数据,修改b的属性,比如说将b的shape改为(2,5),这个操作只改变了对象b中的shape属性,对于a没有影响,数组中的数据物理上只有内存中一块连续的地址,但是怎么去解读这一块内容取决于数组对象的属性,属性决定了数组的形式,ndim决定了数组的维数,shape决定了数组每一维当中有多少个元素,stride决定了当前维度中取得下一个元素所需要跨过的字节数(偏移量),定义不同的属性就能将同一块内存解读为不同类型的数组,取数组中的元素的过程如下,不管a的存储顺序是什么样的(行有限or列优先),print(a)其实就是相当于按照人对于数组的认识来遍历这一块内存:
用c语言描述的话相当于 a[i][j][k] ~ *(*(*(a + i * strides[0]) + j * strides[1]) + k * strides[2])
https://blog.csdn.net/qq_40206371/article/details/121922643
Python numpy视图与副本_python_脚本之家 (jb51.net)