Python中的shape和reshape

    xiaoxiao2022-07-12  197

    shape和reshape都是数组array中的方法

    shape[index] ----- 获取数组中第index层子数组的元素个数。0代表最外层数组。 例如: #coding=utf-8 import numpy as np a = np.array([1,2,3,4,5,6,7,8]) #一维数组(只有一层的数据) print(a.shape[0]) #值为8,因为只有一层数组,里面有8个元素 print(a.shape[1]) #IndexError: tuple index out of range(没有第2层数组,下标不存在,元组索引超出范围) a = np.array([[1,2,3,4],[5,6,7,8]]) #二维数组(有两层元素的数组) print(a.shape[0]) #值为2,最外层数组中有2个元素,2个元素还是数组。 print(a.shape[1]) #值为4,内层数组有4个元素。 print(a.shape[2]) #IndexError: tuple index out of range(没有第3层数组,下标不存在,元组索引超出范围) reshape((x,y)) ----- 将现有数组的元素,转成新维度长度的数组。新生成的数组总个数,必须与原数组总数相等,否则就会报错。 a = np.array([1,2,3,4,5,6,7,8]) #一维数组 b=a.reshape((2,4)) print(b) #结果: # [[1 2 3 4] # [5 6 7 8]] c=a.reshape((4,2)) print(c) #结果: #[[1 2] # [3 4] # [5 6] # [7 8]]

    一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的另外一个shape属性值。

    a = np.array([1,2,3,4,5,6,7,8]) #一维数组 d=a.reshape((-1,4)) print(d) #结果: # [[1 2 3 4] # [5 6 7 8]] f=a.reshape((4,-1)) print(f) #结果: #[[1 2] # [3 4] # [5 6] # [7 8]]

    reshape新生成数组和原数组公用一个内存,不管改变哪个都会互相影响。

    a = np.array([1,2,3,4,5,6,7,8]) #一维数组 e=a.reshape((2,4)) e[0][2]=99 print(e) #结果: #[[ 1 2 99 4] # [ 5 6 7 8]] print(a) #结果 #[ 1 2 99 4 5 6 7 8]
    最新回复(0)