numpy.array 合并和分割

# 导包
import numpy as np

numpy.array 的合并

.concatenate()

  一维数组

x = np.array([1, 2, 3])   # array([1, 2, 3])
y = np.array([3, 2, 1])   # array([3, 2, 1])
np.concatenate([x, y])   # array([1, 2, 3, 3, 2, 1])
z = np.array([666, 666, 666])  # array([666, 666, 666])
np.concatenate([x, y, z])
"""
array([  1,   2,   3,   3,   2,   1, 666, 666, 666])
"""

  二维数组

  .concatenate((a,b,c,...),axis=0) :默认情况下,axis=0可以不写,axis是拼接方向,拼接方向可以理解为拼接完成后数量发生变化的方向,0为横轴,1为纵轴

    axis=0:对应列的数组进行拼接,拼接方向为横轴,需要纵轴结构相同

    axis=1:对应行的数组进行拼接,拼接方向为纵轴,需要横轴结构相同

A = np.array([[1, 2, 3], [4, 5, 6]])
"""
array([[1, 2, 3],
       [4, 5, 6]])
"""
np.concatenate([A, A])
"""
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
"""
np.concatenate([A, A], axis=1)
"""
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 6, 4, 5, 6]])
"""
np.concatenate([A, z])  # 错误
np.concatenate([A, z.reshape(1, -1)])
"""
array([[  1,   2,   3],
       [  4,   5,   6],
       [666, 666, 666]])
"""

.hstack()

  函数原型:numpy.hstack(tup) ,参数tup可以是元组,列表,或者numpy数组,阵列必须具有相同的形状,除了对应于轴的维度(默认情况下,第一个),返回结果为numpy的数组

  等价于  numpy.concatenate(tup,axis=1)

a=[1,2,3]
b=[4,5,6]
np.hstack((a,b))  # array([1, 2, 3, 4, 5, 6])
a=[[1],[2],[3]]
b=[[1],[2],[3]]
c=[[1],[2],[3]]
d=[[1],[2],[3]]
np.hstack((a,b,c,d))
"""
array([[1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3]])
"""

  它其实就是水平(按列顺序)把数组给堆叠起来

.vstack()

  函数原型:numpy.vstack(tup)  ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组

  等价于:  np.concatenate(tup,axis=0)

a=[1,2,3]
b=[4,5,6]
np.vstack((a,b))
"""
array([[1, 2, 3],
       [4, 5, 6]])
"""
a=[[1],[2],[3]]
b=[[1],[2],[3]]
c=[[1],[2],[3]]
d=[[1],[2],[3]]
np.vstack((a,b,c,d))
"""
array([[1],
       [2],
       [3],
       [1],
       [2],
       [3],
       [1],
       [2],
       [3],
       [1],
       [2],
       [3]])
"""

  它是垂直(按照行顺序)的把数组给堆叠起来

numpy.array 的分割

split

  split(ary, indices_or_sections, axis=0):把一个数组从左到右按顺序切分 

  ary:要切分的数组 
  indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左闭右开) 
  axis:沿着哪个维度进行切向,默认为0,横向切分;为1时,纵向切分

x = np.arange(10)  # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x1, x2, x3, x4, x5 = np.split(x, [2, 4, 5, 7])
"""
x1  -->  array([0, 1])
x2  -->  array([2, 3])
x3  -->  array([4])
x4  -->  array([5, 6])
x5  -->  array([7, 8, 9])
"""
A = np.arange(16).reshape(4, 4)
A1, A2 = np.split(A, [2])
"""
A1  -->  array([[0, 1, 2, 3],
            [4, 5, 6, 7]])
A2  -->  array([[ 8,  9, 10, 11],
            [12, 13, 14, 15]])
"""

A1, A2 = np.split(A, [2], axis=1)
"""
A1  -->  array([[ 0,  1],
             [ 4,  5],
            [ 8,  9],
            [12, 13]])
A2  -->  array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])
"""

hsplit

  通过指定要返回的相同shape的array的数量,类似于axis = 1

vsplit

  vsplit沿着垂直轴分割,类似于axis = 0

upper, lower = np.vsplit(A, [2])
"""
upper  -->  array([[0, 1, 2, 3],
               [4, 5, 6, 7]])
"""

left, right = np.hsplit(A, [2])
"""
left  -->  array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]])
"""

原文地址:https://www.cnblogs.com/zry-yt/p/11819221.html

时间: 2024-10-07 18:25:21

numpy.array 合并和分割的相关文章

NumPy学习(索引和切片,合并,分割,copy与deep copy)

NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示例 import numpy as np #索引与切片 array=np.arange(3,15) print(array) print(array[3])#数组下标为3的元素 print('\n') print(array[1:3])#取从下标1到下标3,不包括下标3 print(array[

python numpy array 的一些问题

1 将list转换成array 如果list的嵌套数组是不规整的,如 a = [[1,2], [3,4,5]] 则a = numpy.array(a)之后 a的type是ndarray,但是a中得元素a[i]都还是list 如果a = [[1,2], [3,4]] 则a = numpy.array(a)之后 a的type是ndarray,里面的元素a[i]也是ndarray 2 flatten函数 Python自身不带有flatten函数,numpy中array有flatten函数. 同1的一样

第五章 shell学习之文件的排序、合并和分割

sort命令 sort [选项] [输入文件] 选项: -c 测试文件是否已经排序,如果未被排序则输出第一个未被排序的记录 -k 指定排序的域 -m 合并两个已排序的文件,合并的文件也已经排序,如sort -m a1 a2,a1的记录被有序的插入a2 -n 根据数字的大小进行排序,一般放在域号后,如-k3n -o 将输出重定向到指定文件 -r 将排序结果逆向显示 -t 改变域分割符,如-t: -u 去除结果中的重复行 sort和awk联合 例: [[email protected] tmp]#

numpy.array

关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要讨论list和numpy.array的区别: 我们可以通过以下的代码看出二者的区别 1 >>import numpy as np 2 >>a=[[1,2,3],[4,5,6],[7,8,9]] 3 >>a 4 [[1,2,3],[4,5,6],[7,8,9]] 5 >

gensim与numpy array 互转

目的 将gensim输出的格式转化为numpy array格式,支持作为scikit-learn,tensorflow的输入 实施 使用nltk库的停用词和网上收集的资料整合成一份新的停用词表,用来过滤文档中的停用词,也去除了数字和特殊的标点符号,最后将所有字母转化为小写形式. 以下是原文: Subject: Re: Candida(yeast) Bloom, Fact or Fiction From: [email protected] (Pat Churchill) Organization

python numpy array 与matrix 乘方

python numpy array 与matrix 乘方 编程语言 waitig 1年前 (2017-04-18) 1272℃ 百度已收录 0评论 数组array 的乘方(**为乘方运算符)是每个元素的乘方,而矩阵matrix的乘方遵循矩阵相乘,因此必须是方阵. 2*3的数组与矩阵 >>> from numpy import * >>> import operator >>> a = array([[1,2,3],[4,5,6]]) >>

第四十篇 Numpy.array的基本操作——向量及矩阵的运算

No.1. Numpy.array相较于Python原生List的性能优势 No.2. 将向量或矩阵中的每个元素 + 1 No.2. 将向量或矩阵中的所有元素 - 1 No.3. 将向量或矩阵中的所有元素 * 2 No.4. 将向量或矩阵中的所有元素 / 2 或 // 2 No.5. 幂运算 No.6. 取余 No.7. 取绝对值 No.8. 三角函数 No.9. 取e的x方 No.10. 取任意数的x方 No.11. 取以e为底x的对数 No.12. 取以任意数为底x的对数 No.13. 矩阵

Tensor的合并与分割

先来看一下有哪些接口用来进行张量的合并与分割: tf.concat用来进行张量的拼接,tf.stack用来进行张量的堆叠,tf.split用来进行张量的分割,tf.unstack是tf.split的一种,也用来进行张量分割 1.tf.concat 参数axis代表将要合并的维度 # 假设a代表四个班的成绩(每班35人,8个科目),b代表2个班的成绩 a = tf.ones([4,35,8]) b = tf.ones([2,35,8]) # 使用concat进行合并得到6个班的成绩 c = tf.

numpy array转置与两个array合并

我们知道,用 .T 或者 .transpose() 都可以将一个矩阵进行转置. 但是一维数组转置的时候有个坑,光transpose没有用,需要指定shape参数, 在array中,当维数>=2,时这个成立,但=1时,就不成立了,如: In [7]: yOut[7]: array([0, 0, 0, 0, 0]) In [14]: y.TOut[14]: array([0, 0, 0, 0, 0]) In [15]: y.transpose()Out[15]: array([0, 0, 0, 0,