数组形状修改函数
1、 reshape
reshape()函数既可以被numpy调用,调用时ndarray数组当成参数。
也可以直接被ndarray数组调用,参数传形状就可。
参数order=“C”/“F”
"C"默认将原来数组按行填充。
“F”默认把原来数组按列填充。
2、 flat、flatten()、ravel()
arr=np.arange(8).reshape(2,4)
flat是ndarray的属性,arr.flat是一个可迭代对象,用list(arr)可以显示.
对应的函数arr.flatten(),直接显示展开成的一维数组。
a2=np.arange(8).reshape(2,4)
a2
a3=a2.flatten(order="F")
a3.ravel(order="C")[1]=99#返回视图,当这样改变时按行展开和默认的存储方式一样,所以对原数组进行了修改。但
a3.ravel(order="F")#默认按列 取数展开一维平面,与原来数组在内存默认的存储方式(默认是按行存储的)不同,所以不会这样用索引访问并改变值的时候原来数组不会发生更改。
a2:
array([[0, 1, 2, 3],
[4, 5, 6, 7]])
a3:
array([0, 4, 1, 5, 2, 6, 3, 7])
返回的是数据副本,全拷贝。
a3[0]=99
a2不变,a3变