首页 > 其他分享 >6.numpy数据的常用操作 数组的变形,连接合并,分裂等

6.numpy数据的常用操作 数组的变形,连接合并,分裂等

时间:2022-11-13 15:34:54浏览次数:46  
标签:级联 变形 62 数组 np array numpy axis

    3.变形

     使用reshape函数,注意参数是一个tuple!

#产生0-10的随机整数
arr6 = np.random.randint(0,10,size=(20)) 
arr6
array([2, 8, 9, 6, 2, 6, 6, 1, 0, 1, 3, 5, 1, 3, 8, 5, 0, 8, 0, 8])
#变为4行5列多维数组,注意原数组个数,不够了会报错
arr6.reshape((4,5))
array([[2, 8, 9, 6, 2],
       [6, 6, 1, 0, 1],
       [3, 5, 1, 3, 8],
       [5, 0, 8, 0, 8]])

4.级联   意思指把多个独立的数组相连

1. np.concatenate()级联需要注意的点:
2.级联的参数是列表:一定要加中括号或小括号

3.维度必须相同

4.形状相符

5. 【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向

6.可通过axis参数改变级联的方向

1,第一种连接方式  np.concatenate((arr7, arr8), axis=1)

arr7 = np.random.randint(0,10,size=(3,3)) 
arr8 = np.random.randint(0,10,size=(3,4)) 
display(arr7,arr8)        #display 调整输出格式,整齐一点
array([[2, 2, 3],
       [2, 4, 2],
       [7, 6, 6]])
array([[5, 1, 6, 6],
       [5, 4, 6, 8],
       [6, 6, 3, 8]])
#使用axis控制连接方向, axis指的是连接的维度
#注意 连接的多维数组连接方向数据长度必须相同否则会报错
np.concatenate((arr7, arr8), axis=1)   #axis  1横着连 0竖着连
array([[2, 2, 3, 5, 1, 6, 6],
       [2, 4, 2, 5, 4, 6, 8],
       [7, 6, 6, 6, 6, 3, 8]])

1,第2种连接方式   np.hstack与np.vstack

    水平级联与垂直级联,处理自己,进行维度的变更,

#  hstack 横向连接 ,注意双()
arr9= np.random.randint(0,10,size=(3,3)) 
arr10 = np.random.randint(0,10,size=(3,3)) 
np.hstack((arr9,arr10))
array([[3, 7, 0, 6, 0, 2],
       [0, 2, 1, 4, 9, 8],
       [2, 3, 4, 7, 5, 8]])
#  vstack 垂直连接  注意双()
np.vstack((arr9,arr10))
array([[3, 7, 0],
       [0, 2, 1],
       [2, 3, 4],
       [6, 0, 2],
       [4, 9, 8],
       [7, 5, 8]])

5.切分

与级联类似,三个函数完成切分工作:
npisplit

np.vsplit

np.hsplit

-------------------------------------------

arr11=np.random.randint(0,100,size=(3,6))
arr11
array([[45, 23, 60, 96, 68,  5],
       [44, 27, 94, 88, 35, 57],
       [84, 62, 71, 62, 66, 20]])
# indices_or_sections=3 表示3等分
#注意 数组必须刚好等分,否则报错
part1,part2,part3=np.split(arr11,indices_or_sections=3,axis=1)
display(part1,part2,part3)
array([[45, 23],
       [44, 27],
       [84, 62]])
array([[60, 96],
       [94, 88],
       [71, 62]])
array([[68,  5],
       [35, 57],
       [66, 20]])
# 非等分方式分割
#indices_or_sections=[m, n] 表示的范是0:m, m:n, n:
part1,part2,part3=np.split(arr11,indices_or_sections=[2,5],axis=1)
display(part1,part2,part3)
array([[45, 23],
       [44, 27],
       [84, 62]])
array([[60, 96, 68],
       [94, 88, 35],
       [71, 62, 66]])
array([[ 5],
       [57],
       [20]])
# 非等分方式分割,垂直分:hsplit,没有axis  或者axis=0
part1,part2,part3=np.split(arr11,indices_or_sections=[1,2])
display(part1,part2,part3)
array([[45, 23, 60, 96, 68,  5]])
array([[44, 27, 94, 88, 35, 57]])
array([[84, 62, 71, 62, 66, 20]])

6.副本   #拷贝数组处理数据,避免对原数组产生影响

所有赋值运算不会为ndarray的任何元素创建副本。对赋值后的对象的操作也对原来的对象生效。
可使用copy()函数创建副本

#拷贝数组处理数据,避免对原数组产生影响
copy_array = arr.copy()

标签:级联,变形,62,数组,np,array,numpy,axis
From: https://www.cnblogs.com/988MQ/p/16886035.html

相关文章

  • 5.numpy数组的索引和切片
    三、ndarray的基本操作  索引和切片1.索引维与列表完全一致多维时同理2.切片维与列表完全一致多维时同理将数据反转,例如[1,2,3]--->[3,2,1]两个::进行切片-------......
  • 最长无重复子数组
    最长无重复子数组 import java.util.*;public class Solution {    /**     *      * @param arr int整型一维数组 the array    ......
  • spring set-数组注入
    还是举例说明:QianDaye类publicclassQianDaYe{privateString[]aiHaos;//多个女性朋友privateWoman[]womens;publicvoidsetAiHaos(Strin......
  • 4.numpy数组的构造和属性
    1.numpy数组用列表直接创建importnumpyasnpage=[15,16,18]#创建列表,后面赋值列表array3=np.array(age,dtype=np.float64)#用自带的np......
  • 3.numpy数组的基本概念
    一.创建Array使用np.array()由pythonlist创建C          数组的概念:数据类型一致的一个连续的内存空间pythonlist    列表(C语言说:列......
  • Python3.8多进程共享内存之Numpy数组
    在利用python处理数据的时候,想要充分发挥CPU的算力,可以选择利用多进程来实现。如果子进程内存占用较大的话,往往很难多开进程,如果不涉及对内存的写入操作,那么多个子进程共享......
  • java——数组02
                                                        ......
  • 20. 数组去重方法
    1.使用ES6新增的set方法 2.双重for循环 3. sort排序后去重functionfn(arr){letnewArr=[]arr.sort((a,b)=>{returna-b})arr.f......
  • java——数组01
                                                        ......
  • 合并两个有序的数组
     import java.util.*;public class Solution {    public void merge(int A[], int m, int B[], int n) {        //新建数组C,比较数组A......