np.cross()、np.stack()、np.hstack()、np.vstack()、numpy.dstack()、np.split()、np.hsplit()、np.vsplit()函数详解

1.numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)

        计算两个向量(向量数组)的叉乘。叉乘返回的数组既垂直于a,又垂直于b。 如果a,b是向量数组,则向量在最后一维定义。该维度可以为2,也可以为3. 为2的时候会自动将第三个分量视作0补充进去计算。

如下演示:

import numpy as np

# Vector cross-product
x = [1, 2, 3]
y = [4, 5, 6]
np.cross(x, y)
T = np.array([-3,  6, -3])
print(T)

print('n')

# Multiple vector cross-products. Note that the direction of the cross
# product vector is defined by the `right-hand rule`.
x = np.array([[1,2,3], [4,5,6]])
y = np.array([[4,5,6], [1,2,3]])
T1 = np.cross(x, y)
print(T1)

运行结果如下:

[-3  6 -3]


[[-3  6 -3]
 [ 3 -6  3]]

2.np.stack()

        stack此时翻译成堆叠,也就是对数据进行堆叠,函数原型为:stack(arrays, axis=0),arrays可以传数组和列表。axis即在横轴(行)方向或者纵轴(列)方向对数据进行操作。

演示如下:

import numpy as np

a = [[1, 2, 3],
     [4, 5, 6]]
print("列表a如下:")
print(a)

print("axis=0")
c = np.stack(a, axis=0)
print(c)

print("axis=1")
c = np.stack(a, axis=1)
print(c)

运行结果如下:

列表a如下:
[[1, 2, 3], [4, 5, 6]]
axis=0
[[1 2 3]
 [4 5 6]]
axis=1
[[1 4]
 [2 5]
 [3 6]]

Process finished with exit code 0

3.np.hstack()

        函数原型:hstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。沿着水平方向将数组堆叠起来。

演示如下:

import numpy as np

a = [1, 2, 3]
b = [4, 5, 6]
print(np.hstack((a, b)))

print('n')

a = [[1], [2], [3]]
b = [[4], [5], [6]]
print(np.hstack((a, b)))

运行结果如下:

[1 2 3 4 5 6]


[[1 4]
 [2 5]
 [3 6]]

4.np.vstack()

        函数原型:vstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。它是垂直(按照行顺序)的把数组给堆叠起来 v就是 vertical 垂直方向的意思。

演示如下:

import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.vstack((a,b)))

print('n')

a=[[1],[2],[3]]
b=[[4],[5],[6]]
print(np.vstack((a,b)))

运行结果如下:

[[1 2 3]
 [4 5 6]]


[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

Process finished with exit code 0

5.numpy.dstack()函数

        

函数原型:numpy.dstack(tup)

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

演示如下:

import numpy as np
a = np.array((1,2,3))
b = np.array((4,5,6))
print(np.dstack((a,b)))


print('n')

a1 = np.array([[1],[2],[3]])
b1 = np.array([[2],[3],[4]])
print(np.dstack((a1,b1)))

运行结果如下:

[[[1 4]
  [2 5]
  [3 6]]]


[[[1 2]]

 [[2 3]]

 [[3 4]]]

Process finished with exit code 0

 6.np.split()

        split(ary, indices_or_sections, axis=0)
        把一个数组从左到右按顺序切分 
        参数: ary:要切分的数组,indices_or_sections:如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭),axis:沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分.hsplitvsplitarray_split之间的唯一区别是array_split允indices_or_sections是一个不等于轴的整数。 对于应该分成n个部分的长度为l的数组,它将返回l%n个大小为l // n + 1的子数组,其余大小为l // n。

演示如下:

import numpy as np
x = np.arange(8.0)
T = np.array_split(x, 3)
print(T)
print('n')
T1 = np.array_split(x, [1, 3])
print(T1)

运行结果如下:

[array([0., 1., 2.]), array([3., 4., 5.]), array([6., 7.])]


[array([0.]), array([1., 2.]), array([3., 4., 5., 6., 7.])]

Process finished with exit code 0

7.补充

np.hsplit函数(col方向)

使用hsplit,通过指定要返回的相同shape的array的数量,或者通过指定分割应该发生之后的列来沿着其横轴拆分原array:

np.vsplit函数 (row方向)

vsplit沿着垂直轴分割,其分割方式与hsplit用法相同。

np.hsplit()、np.vsplit()函数使用方法和np.split()一样

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>