import numpy as np
0. 生成等差数列
np.arange(0, 10, 1, dtype=int) = [0 1 2 3 4 5 6 7 8 9] #大于等于0, 小于10,步长为1的等差数列
np.arange(10) = [0 1 2 3 4 5 6 7 8 9] #默认大于等于0, 小于10,步长为1的等差数列
1. 生成多维数组,并批量初始化元素
1.1生成2*3初始值为0的数组
np.zeros((2, 3), dtype=int) = [[0 0 0]
[0 0 0]]
1.2生成2*3*2初始值为1的数组
np.ones((2, 3, 2), dtype=int) = [[[1 1]
[1 1]
[1 1]]
[[1 1]
[1 1]
[1 1]]]
2. 初始化两个二维数组
a = np.array([[1, 2], [1, 1]])
b = np.array([[1, 2], [1, 1]])
print结果:
a= [[1 2]
[1 1]]
b= [[1 2]
[1 1]]
3.数组乘法*运算, 用来将两个shape相同的数组对应位置的数据相乘,生成相同shape的新数组
a * b = [[1 4]
[1 1]]
4. 矩阵乘法,用dot方法进行计算,两个矩阵中的行列向量点积,生成新的矩阵
a.dot(b) = [[3 4]
[2 3]]
5. 算数运算都是按照逐个元素进行
log(a) = [[ 0. 0.69314718]
[ 0. 0. ]]
sin(a) = [[ 0.84147098 0.90929743]
[ 0.84147098 0.84147098]]
a - 1 = [[0 1]
[0 0]]
6. +=,-= 和*=将修改原数组的元素
a *= 2
print a
[[2 4]
[2 2]]
7. 聚合函数,按照某个axis进行聚合计算
np.sum(a) = 5 #所有axis上的元素求和
np.sum(a, axis=0) = [2 3] #axis=0的维度进行求和,压缩行
np.sum(a, axis=1) = [3 2] #axis=1的维度进行求和, 压缩列
类似的:
np.min() np.max() 求指定axis维度的元素最小、最大值.
np.argmax() 求指定axis维度的元素最大值的索引:
np.argmax(a, axis=1) = [1 0]
np.cumsum() 指定axis维度元素向前累计求和
np.cumsum(a, axis=1) = [[1 3]
[1 2]]
8. 取二维数组的部分行列元素
a[[0, 1], [1]] = [2 1] #取[0,1]行,[1]列的元素,对原数组元素的引用,修改会改变原数组的值
a[0, :] = [1 2] #取0行所有列元素,对原数组元素的引用,修改会改变原数组的值
9. 多维数组遍历,以第一个轴为基础
for r in a:
print 'r = ', r
r = [1 2]
r = [1 1]
10. 数组元素迭代器,按照轴的优先级依次取元素
for e in a.flat:
print e
1 2 1 1
11. 数组的形状
a.shape = (2, 2)
12. 改变数组的形状,不改变元素的值;reshape改变形状并返回新数组,resize改变原数组的形状
12.1 a.reshape((4, 1)) = [[1]
[2]
[1]
[1]]
12.2 a.resize((1, 4))
print a
[[1 2 1 1]]
12.3 a.ravel() = [1 2 1 1] # 将多维数组拉平成一维数组
13. 条件语句生成新数组
语法1: np.where(condition, x, y) 如果condition满足,则返回x, 否则返回y;注意condition可以是矩阵的条件
#如果a数组的元素>1则返回1,否则返回0,生成新数组
令a=[[1 2 3], [1 0 5]] 则:
np.where(a > 1, 8, 0) = [[0 8 8]
[0 0 8]]
语法2:np.where(condition) 返回满足condition的元素的坐标
令a=[[1 2 3], [1 0 5]] 则:
np.where(a > 1) = (array([0, 0, 1]) , array([1, 2, 2])) 表示仅坐标为(0, 1) (0, 2) (1, 2)的元素满足>1的条件,前一个array记录行坐标,后一个array记录列坐标
14. 数组排序,可以指定axis
x = np.array([1, 2], [2, 1])
x.sort() #改变原数组元素的排列
x = [[1 2]
[1 2]]
==========
x = np.array([4, 8, 6, 3])
indexers = x.argsort()
indexers = [3 0 2 1] #排序后,原索引的位置
x[indexers] = [3 4 6 8] #根据索引得到排序后的数组
更多请参考:http://blog.csdn.net/sinat_32547403/article/details/54017551