1. 类型修改
ndarray.astype(type)
返回修改了类型之后的数组
stock_change = np.random.normal(0, 1, (4, 5))
stock_change.astype(np.int32)
ndarray.tostring([order])
ndarray.tobytes([order])
构造包含数组中原始数据字节的Python字节
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
arr.tostring()
2. 去重
temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
np.unique(temp)
array([1, 2, 3, 4, 5, 6]
3. 级联
np.concatenate()
参数是列表或元组;级联的数组维度必须相同;可通过axis参数改变级联的方向
n1 = np.random.randint(0, 100, size=(3, 5))
n2 = np.random.randint(0, 100, size=(3, 5))
display(n1, n2)
# 级联,合并
np.concatenate((n1, n2)) # 默认上下合并
np.concatenate((n1, n2), axis=0) # 上下合并 axis=0表式第一个维度(行)
# 左右合并 axis=1 表式第2个维度(列)
np.concatenate((n1, n2), axis=1)
np.hstack与np.vstack
水平级联与垂直级联
# np.hstack : 水平级联,左右合并
np.hstack((n1, n2))
# np.vstack: 上下合并,垂直级联
np.vstack((n1, n2))
4. 切分/拆分/分割
与级联类似,三个函数完成切分工作:
np.split np.vsplit np.hsplit
n = np.random.randint(0, 100, size=(6, 4))
n
# 垂直拆分,平均拆成3份
np.vsplit(n, 3)
# 可以按照指定位置拆分
np.vsplit(n, (1, 2, 4))
# 水平方向拆分
np.hsplit(n, 2)
# split: 可以做水平或垂直拆分
# axis=0 行
# axis=1 列
np.split(n, 2) # 默认按行拆分
np.split(n, 2, axis=0) # 按行拆分
np.split(n, 2, axis=1) # 按列拆分
5. 拷贝复制
# 赋值 : 用的是同一个内存
n = np.arange(10)
n2 = n
n2[0] = 100
display(n, n2)
array([100, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([100, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 拷贝: copy
n1 = np.arange(10)
# n1
n2 = n1.copy()
n2[0] = 100
display(n1, n2)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([100, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 深拷贝copy
n = np.random.randint(0, 10, size=(2, 3))
n2 = n.copy()
n2[0, 0] = 100
display(n, n2)
array([[2, 4, 8],
[1, 4, 2]])
array([[100, 4, 8],
[ 1, 4, 2]])