numpy中的简单操作
创建矩阵a
import numpy as np
a = np.array([1,2,3])
a
array([1, 2, 3])
求矩阵最大值
a1 = data.max()
a1
3
创建shape(3,)全为0的矩阵
b = np.zeros(3)
b
array([0., 0., 0.])
创建shape(4,)的随机矩阵
c = np.random.random(4)
c
array([0.53161082, 0.52909233, 0.90536492, 0.4952223 ])
简单加法
a2 = a + b
a2
array([1., 2., 3.])
简单乘法
a3 = a * b
a3
array([0., 0., 0.])
广播机制 当两个数组的形状并不相同的时候,我们可以通过扩展数组的方法来实现相加、相减、相乘等操作,这种机制叫做广播(broadcasting)。 广播的原则:如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,或其中的一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。这句话乃是理解广播的核心。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。
d1 = np.array([[0, 0, 0],[1, 1, 1],[2, 2, 2], [3, 3, 3]])
d2 = np.array([1, 2, 3])
d_sum = d1 + d2
d_sum
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
d3 =np.array([1, 2,])
d4 =np.array([[1,10],[100,1000],[10000,100000]])
d5 = d3 * d4
d5
array([[ 1, 20],
[ 100, 2000],
[ 10000, 200000]])
矩阵的索引切片 使用 i:j 的形式来表示从索引 i 到 j(不包含j)的这个区间内的元素 使用 i:j:k 的形式来表示从索引 i 到 j(不包含j)的这个区间内的元素,当k为正整数时,表示每k个取一次,当k为负整数的时候,表示每k个取一次,但是时倒着取 其中,i、j、k 三个位置的数字均可以省略: i省略表示从第一个元素开始 j省略表示最后一个元素结束 i和j同时省略则表示所有元素,也就不存在从小索引到大索引还是从大索引到小索引的区别了 k省略表示步长为1,正向取值,但当k值也省略的时候,第二个冒号也就没有必要写了,于是又回到了第二个使用 i:j 表示区间的形式
e = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])
e1 = e[0:4:2]
e1
array([[1, 1, 1],
[3, 3, 3]])
e2 = e[0,0:4]
e2
array([1, 1, 1])
使用 axis 参数进行矩阵聚合 如果axis=0,则沿着纵轴进行操作,若axis=1则沿着横轴进行操作。但是这只是仅仅对于二维数组而言。但是可以总结为一句话:设axis=i ,则numpy沿着第i个下标变化的方向进行操作,
f = np.array([[1,2],[3,4],[5,6]])
f1 = f.sum(axis=0)
f1
array([ 9, 12])
转置
f2 = f.T
f2
array([[1, 3, 5],
[2, 4, 6]])
创建高维数组
data = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
data
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
|