Numpy数组操作

187 阅读2分钟

修改数组形状

reshape()

原型:reshape(shape,order='C')
作用:不改变数据的情况下修改数组形状

参数描述
shape形状
order'C':按行,'F':按列,'A':按原顺序,'K':元素在存中的出现顺序
import numpy as np
arr = np.arange(12)
print(arr)
# 参数形状是一个元组
arr = arr.reshape((3,4))
print(arr)

flat

一个数组元素迭代器

import numpy as np
arr = np.arange(12).reshape((3,4))
print(arr)

for x in arr.flat:
    print(x)

flatten()

原型:flatten(order='C') 作用:展平的数组元素并拷贝一份,顺序通常是“C的风格”
注意:修改返回的数组不会对原来数组产生影响

参数描述
order'C':按行,'F':按列,'A':按原顺序,'K':元素在存中的出现顺序
import numpy as np
arr = np.arange(12).reshape((3,4))
print(arr)
print('\n')

# 默认order=’C‘
arr_a = arr.flatten()
print(arr1)

arr_b = arr.flatten(order='F')
print(arr2)

arr_b[0] = 99
print(arr_b)
print('\n')

# 验证arr是否被影响
print(arr)

ravel()

原型:numpy.ravel(order='C') 作用:展平的数组元素,顺序通常是“C的风格”,返回的是数组实图(view) 注意:修改会影响元数组

import numpy as np
arr = np.arange(12).reshape((3,4))
print(arr)
print('\n')

b = arr.ravel()
print(b)
print('\n')

# 同时会修改原数组的值
# b[1] = 99 
# print(b)
# print('\n')
# print(arr)

# 不会修改原数组的值
c = arr.ravel(order='F')
c[2] = 22
print(c)
print(arr)

翻转数组

transpose()

原型:numpy.transpose(a,axes=None)
作用:对换数组的维度
注意:修改会影响原数组

参数描述
a要操作的数组
axes整数列表,对应维度,通常所有维度都会兑换
import numpy as np

arr = np.arange(12).reshape(3,4)
print(arr,'\n')
arr_a = arr.transpose()
print(arr_a)

ndarray.T

类似numpy.transpose()

import numpy as np

arr = np.arange(12).reshape(3,4)
print(arr,'\n')
arr_a = arr.T
print(arr_a)

rollaxis()

原型:numpy.rollaxis(a,axis,start=0)
作用:向后滚动特定的轴到一个特定位置

参数描述
a要操作的数组
axis要向后滚动的轴,其他轴的相对位置不会改变
start默认为0,表示完整的滚动
会滚动到一定位置
import numpy as np

arr = np.arange(24).reshape(2,3,4)
print(arr,'arr shape:',arr.shape,'\n')
# arr_a = np.rollaxis(arr,0)
# print(arr_a,'\n','arr_a shape:',arr_a.shape,'\n')

# arr_b = np.rollaxis(arr,1)
# print(arr_b,'\n','arr_a shape:',arr_b.shape,'\n')

# arr_c = np.rollaxis(arr,2)
# print(arr_c,'\n','arr_c shape:',arr_c.shape,'\n')

arr_d = np.rollaxis(arr,1,start=0)
print(arr_d,'\n','arr_d shape:',arr_d.shape,'\n')

swapaxes()

原型:numpy.swapaxes(a,axis1,axis2)
作用:交换数组的两个轴,axis1和axis2交换位置

参数描述
a要操作的数组
axis1对应第一个轴的整数
axis2对应第二个轴的整数
import numpy as np

arr = np.arange(24).reshape(2,3,4)
print(arr,'\n','arr shape:',arr.shape,'\n')

arr_a = np.swapaxes(arr,2,1)
print(arr_a,'\n',arr_a.shape)

修改数组维度

broadcast()

用于模仿广播的对象,它返回一个对象,该对象封装了将一个数组广播到另一个数组的结果