【小白从小学Python、C、Java】
【Python全国计算机等级考试】
【Python数据分析考试必会题】
● 标题与摘要
Python数据分析中的
数组行列变换,元素总数不变
● 选择题
关于数组行列变换,以下哪一项说法错误。
A.多维数组可以进行数组维度的改变
B.reshape()可用于改变数组维度
C.ravel()不可以将数多维据展平为一维数据
D.flatten()可以将数多维据展平为一维数据
欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn
● 问题解析
1.numpy.reshape(a, newshape, order='C')
(1)newshape:新形状的定义,int或int的元组,如果是整数,则结果将是该长度的一维数组。一个形状维度可以是-1。在这种情况下,将根据数组的长度和剩余维度推断该值。
(2)order:读取元素的顺序 ,‘C’ 按照行方向读取,‘F’按照列方向读取。
2.ndarray.flatten(order='C')
(1)flatten只能适用于numpy对象,返回展平成一维的数组。
(2)order:展开的顺序,默认情况下‘C'以行为主的顺序展开,‘F'意味着以列的顺序展开。
3.numpy.ravel(a, order='C')
(1)返回展平的一维数组。返回的数组将与输入数组的类型相同。
(2)order:展开的顺序,默认情况下‘C'以行为主的顺序展开,‘F'意味着以列的顺序展开。
4.ravel()和flatten()均可以将数多维据展平为一维数据。
(1)ravel()返回的是视图,意味着改变元素的值会影响原始数组;
(2)flatten()返回的是拷贝,意味着改变元素的值不会影响原始数组。
● 附图
图一:reshape()可用于改变数组维度
图二:flatten()可以将数多维据展平为一维数据
图三:ravel()不可以将数多维据展平为一维数据
● 附图代码
import numpy as np
#创建多维数组
Arr=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print("创建的多维数组为:\n",Arr)
arr=Arr.reshape(2,6)
print("数组重塑后的数组为:\n",arr)
#创建一维数组
A=np.arange(10)
print("创建的一维数组为:\n",A)
a=A.reshape(2,-1)
print("数组重塑后的数组为:\n",a)
#flatten()方法
b=a.flatten()
print(b)
#对b进行修改
#flatten方法修改展平后的数据不会影响操作之前的数据
b[1]=100
print("修改之后的b为:",b)
print("修改以后的a为:\n",a)
#ravel()方法
c=a.ravel()
print(c)
#修改c前
print("修改之前的c为",c)
#flatten方法不会影响展平之前的数据,所以此时的a不受影响
print("此时的a为:\n",a)
#修改c后
#ravel方法修改展平后的数据会影响操作之前的数据
c[3]=666
print("修改之后的c为:",c)
print("此时的a为:\n",a)
● 正确答案
daBegin
C