[TOC]
# 改变数组的维度
~~~
import numpy as np
# 创建0-10包左不包右的数组
tang_array = np.arange(10)
print(tang_array)
print(tang_array.shape)
# 把shape值变为2行5列
tang_array.shape = 2, 5
print(tang_array)
~~~
输出
~~~
[0 1 2 3 4 5 6 7 8 9]
(10,)
[[0 1 2 3 4]
[5 6 7 8 9]]
~~~
修改shape值会影响原来的值
如果不想影响原来的值
~~~
import numpy as np
# 创建0-10包左不包右的数组
tang_array = np.arange(10)
# reshape操作后结果要接收,不会影响原来的数组
reshape = tang_array.reshape(5, 2)
print(reshape)
~~~
但是我们要注意,分的时候要注意原来数组的个数
~~~
import numpy as np
tang_array = np.arange(10)
reshape = tang_array.reshape(2,3)
print(reshape)
~~~
报错
~~~
Traceback (most recent call last):
File "/Users/jdxia/Desktop/study/py/study.py", line 5, in <module>
reshape = tang_array.reshape(2,3)
ValueError: cannot reshape array of size 10 into shape (2,3)
~~~
# 新增维度
~~~
import numpy as np
tang_array = np.arange(10)
print(tang_array.shape)
# :表示原来的东西还是要的,newaxis表示增加一个维度
tang_array = tang_array[np.newaxis, :]
print(tang_array)
print(tang_array.shape)
~~~
输出
~~~
(10,)
[[0 1 2 3 4 5 6 7 8 9]]
(1, 10)
~~~
原来是1维的
新增一个维度变为2维的了
# 压缩维度
~~~
import numpy as np
tang_array = np.arange(10)
# :表示原来的东西还是要的,newaxis表示增加一个维度
tang_array = tang_array[np.newaxis, :]
print(tang_array)
# 再新增2个维度
tang_array = tang_array[:, np.newaxis, np.newaxis]
print(tang_array)
# 压缩元素,把空的轴压缩掉
tang_array = tang_array.squeeze()
print(tang_array.shape)
~~~
输出
~~~
[[0 1 2 3 4 5 6 7 8 9]]
[[[[0 1 2 3 4 5 6 7 8 9]]]]
(10,)
~~~
# 行列转换
把原来的行列数转换下
~~~
import numpy as np
tang_array = np.arange(10)
# 指定压缩的形状
tang_array.shape = 2, 5
print(tang_array)
print('-' * 10)
# 也可以写成这样tang_array.T,他不改变原来的值
transpose = tang_array.transpose()
print(transpose)
~~~
输出
~~~
[[0 1 2 3 4]
[5 6 7 8 9]]
----------
[[0 5]
[1 6]
[2 7]
[3 8]
[4 9]]
~~~
# 数组的连接
拼接
~~~
import numpy as np
a = np.array([[123, 345, 567], [43, 23, 45]])
b = np.array([[12, 343, 56], [132, 454, 56]])
# 里面的参数要类似元祖的形式
c = np.concatenate((a, b))
print(c)
~~~
输出
~~~
[[123 345 567]
[ 43 23 45]
[ 12 343 56]
[132 454 56]]
~~~
还可以指定维度
~~~
import numpy as np
a = np.array([[123, 345, 567], [43, 23, 45]])
b = np.array([[12, 343, 56], [132, 454, 56]])
# 里面的参数要类似元祖的形式(横着拼接)
c = np.concatenate((a, b), axis=1)
print(c)
~~~
输出
~~~
[[123 345 567 12 343 56]
[ 43 23 45 132 454 56]]
~~~
**便捷写法**
~~~
import numpy as np
a = np.array([[123, 345, 567], [43, 23, 45]])
b = np.array([[12, 343, 56], [132, 454, 56]])
# 横着拼接
hstack = np.hstack((a, b))
print(hstack)
# 竖着拼接
vstack = np.vstack((a, b))
print(vstack)
~~~
# 拉平
~~~
import numpy as np
a = np.array([[123, 345, 567], [43, 23, 45]])
flatten = a.flatten()
print(flatten)
~~~
输出
~~~
[123 345 567 43 23 45]
~~~