数组的形状即这个数组有几行几列
shape函数查看该数组的形状,输出为几行几列
import numpy as np
t1=np.arange(12)
print(t1)
print(t1.shape)
t2=np.array([[1,2,3],[4,5,6]])
print(t2)
print(t2.shape)
t3=np.array([[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]]])
print(t3)
print(t3.shape)
输出:
[ 0 1 2 3 4 5 6 7 8 9 10 11]
(12,)
[[1 2 3]
[4 5 6]]
(2, 3)
[[[ 1 2]
[ 3 4]
[ 5 6]]
[[ 7 8]
[ 9 10]
[11 12]]]
(2, 3, 2)
shape方法中返回有一个数字为一维数组,两个数字为二维数组,三个数字为三维数组
2.reshape函数改变数组的形状
t4=np.arange(12)
print(t4)
print(t4.reshape((3,4)))
[ 0 1 2 3 4 5 6 7 8 9 10 11]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
解释一下三位数组中shape出来的三个数字含义:
t5=np.arange(24).reshape((2,3,4))
print(t5)
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
这里可以看出可以将shape(2,3,4)中的2,3,4分别理解为:2块,3行,4列
另外注意,reshape是有返回值的,这个函数运行不会对数组本身进行改变,即将t5跑一下reshape(4,6)之后可以输出46的t5
但是此时再输出t5时t5还是(23*4)的
将不知道元素个数的数组转换为1维:
t5=t5.reshape((4,6))
print(t5)
现在可能不知道t5是几行几列的想把t5变成一维的,变成一维数组本来应该是reshape((24,))注意(24,)和(24,1)还有(1,24)是不一样的(24,1)是24行一列
t6=t5.reshape((t5.shape[0]*t5.shape[1],))
shape的第一项为几行,第二项为几列,相乘可知t5有多少元素,再将其转变为1维的
输出:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
法二:
t5.flatten()
将t5展开