一. 形状改变
- reshape
reshape可以改变数组的形状,但是元素总数必须保持一致。它返回的是原数组的视图,改变形状,但是内容共享。
arr=np.array([[2,3,4],[6,7,8]])
a=arr.reshape((3,2))
print(a)
a[1]=1
print(arr)
Out:
[[2 3]
[4 6]
[7 8]]
[[2 3 1]
[1 7 8]]
- 其他3个函数都是展开为一维数组,除了flatten是返回一个一维数组副本,其他都是在原数组上迭代。
arr=np.array([[2,3,4],[6,7,8]])
a=arr.flatten()
a[1]=1
print(a)
print(arr)
Out:
[2 1 4 6 7 8]
[[2 3 4]
[6 7 8]]
二. 翻转(转置)
transpose和属性T完全等效,就是转置,他们返回的是视图。
arr=np.array([[2,3,4],[6,7,8]])
print(arr,arr.T)
Out:
[[2 3 4]
[6 7 8]]
[[2 6]
[3 7]
[4 8]]
三. 连接
numpy.concatenate((a1, a2, ...), axis)
该函数可以连接多个数组,但是要求连接的维度是相匹配的,不匹配怎么连接啊!!下图中栗子,如果改成axis=1,横向拼接,则因为行数不匹配,会报错。
arr=np.array([[2,3,4],[6,7,8]])
arr1=np.ones((1,3))
print(arr1,arr)
print(np.concatenate((arr1,arr)))
Out:
[[1. 1. 1.]]
[[2 3 4]
[6 7 8]]
[[1. 1. 1.]
[2. 3. 4.]
[6. 7. 8.]]
四. 分割
- split
numpy.split(ary, indices_or_sections, axis)
- ary:被分割的输入数组
- indices_or_sections:可以是整数,表明要分割的子数组的数量。 如果此参数是一维数组,则表明分割点下标。
- axis:默认为 0
arr=np.array([[2,3,4],[6,7,8],[1,1,1],[0,0,0]])
a=np.split(arr,[1,2])
print(a)
Out:
[array([[2, 3, 4]]), array([[6, 7, 8]]), array([[1, 1, 1],[0, 0, 0]])]
- hsplit、vsplit
numpy.hsplit是split()函数的特例,其中轴为 1 表示水平分割,无论输入数组的维度是什么。
numpy.vsplit是split()函数的特例,其中轴为 0 表示竖直分割,无论输入数组的维度是什么。