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时,纵向切分.hsplit和vsplit与array_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()一样