Bootstrap

Numpy-改变数组维度_数组的拼接

  • 处理数组的一项重要工 作就是改变数组的维度,包含提高数组的维度和降低数组的维度,还包括数组的转置Numpy
    提供的大量API可以很轻松地完成这些数组的操作。 例如,通过 reshape 方法可以将一维数组变成二维、三维或者多维数组。 通过
    ravel 方法或 flatten 方法可以将多维数组变成一维数组。改变数组的维度还可以直接设置 Numpy 数组的 shape
    属性(元组类型),通过 resize 方法也可以改变数组的维度。

数组的拼接

  • 水平数组组合
    • 通过 hstack 函数可以将 两个或多个数组水平组合 起来形成一个数组
    • 但数组水平组合必须要满足一个条件,就是所有参与水平组合的数组的行数必须相同,否则进行水平组合会抛出异常。
  • 垂直数组拼接

    • 通过 vstack 函数可以将两个或多个数组垂直组合起来形成一个数组
  • 数组的拼接

函数描述
concatenate连接沿现有轴的数组序列
hstack水平堆叠序列中的数组(列方向)
vstack竖直堆叠序列中的数组(行方向)

numpy.concatenate 函数用于沿指定轴连接相同形状的两个或多个数组,格式如下: numpy.concatenate((a1, a2, …), axis) 其中参数 a1, a2, …指相同类型的数组;axis 指沿着它连接数组的轴,默认为 0(0为横向拼接,1为纵向拼接)。

numpy.hstack 它通过水平堆叠来生成数组。 numpy.vstack 它通过垂直堆叠来生成数组

🎯实战:

# coding: utf-8

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
b = np.array([['a', 'b', 'c'], ['d', 'e', 'f']])
print(b)
print(np.concatenate((a, b)))  # 默认是横面拼接(垂直拼接, 接触面为水平), 等价于vstack
print('垂直方向拼接 相当于vstack')
print(np.concatenate([a, b], axis=0))
print('水平方向拼接 相当于hstack')
print(np.concatenate([a, b], axis=1))

# vstack()与hstack()实现二维数组的拼接
a2 = np.array([[1, 2, 3], [4, 5, 6]])
print(a2)
b2 = np.array([['a', 'b', 'c'], ['d', 'e', 'f']])
print(b2)
print('X轴方向接面及垂直堆叠')
print(np.vstack([a, b]))

print('y轴方向接面及水平堆叠')
print(np.hstack([a, b]))
"""注意!如果拼接的行和列数目不一致, 则会报错"""

# 三维数组的拼接
aa = np.arange(1, 37).reshape(3, 4, 3)
print('数组aa shape:', aa.shape)
bb = np.arange(101, 137).reshape(3, 4, 3)
print('数组bb shape:', bb.shape)
print('concatenate((aa, bb), axis=0)结果:')
print(np.concatenate((aa, bb), axis=0).shape)
print('concatenate((aa, bb), axis=1)结果:')
print(np.concatenate((aa, bb), axis=1).shape)


result:

[[1 2 3]
 [4 5 6]]
[['a' 'b' 'c']
 ['d' 'e' 'f']]
[['1' '2' '3']
 ['4' '5' '6']
 ['a' 'b' 'c']
 ['d' 'e' 'f']]
垂直方向拼接 相当于vstack
[['1' '2' '3']
 ['4' '5' '6']
 ['a' 'b' 'c']
 ['d' 'e' 'f']]
水平方向拼接 相当于hstack
[['1' '2' '3' 'a' 'b' 'c']
 ['4' '5' '6' 'd' 'e' 'f']]
[[1 2 3]
 [4 5 6]]
[['a' 'b' 'c']
 ['d' 'e' 'f']]
X轴方向接面及垂直堆叠
[['1' '2' '3']
 ['4' '5' '6']
 ['a' 'b' 'c']
 ['d' 'e' 'f']]
y轴方向接面及水平堆叠
[['1' '2' '3' 'a' 'b' 'c']
 ['4' '5' '6' 'd' 'e' 'f']]
数组aa shape: (3, 4, 3)
数组bb shape: (3, 4, 3)
concatenate((aa, bb), axis=0)结果:
(6, 4, 3)
concatenate((aa, bb), axis=1)结果:
(3, 8, 3)

进程已结束,退出代码0

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;