一、N维数组创建
import numpy as np
import random
# 查看numpy的版本
print(np.__version__)
# 产生10个1~50间的随机数据,并加入到一维numpy数组a中
a1 = np.array(np.random.randint(1, 50, 10))
print("第一个元素为:",a1[0])
print(a1)
print("维数为:", a1.ndim)
# 负索引表示从最后一个元素开始
print("最后一个元素为: ", a1[-1])
# 产生二维数组
a2 = np.array( [ [1, 2, 3], [6, 7, 0] ] ) # 注意此处外围的一个[]
print("第一个元素为:", a2[0, 0])
print(a2)
print("维数为:", a2.ndim)
# 产生三维数组
a3 = np.array([ [ [1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6] ] ] ) # 注意此处外围的两个[]
print("第一个元素为:", a3[0, 0,0])
print("第一个元素为:",a3)
print("维数为:", a3.ndim)
# 产生高维数组 ndmin表示维数
a4 = np.array([1, 2, 3, 4], ndmin=4)
print("第一个元素为:", a4[0, 0, 0, 0])
print(a4)
print("维数为:", a4.ndim)
二、对N维数组的操作
import numpy as np
# 一维数组的裁剪
a = np.array([1, 2, 3, 4, 5, 6, 7])
# 返回索引 1~5 的元素
print(a[1:5])
# 返回索引 1~末尾 的元素
print(a[1:])
# 从末尾开始的索引5到末尾开始的索引1遍历
print(a[-5:-1])
# 有步长的裁剪(返回索引 1~5 的元素,步长为2)
print(a[1:5:2])
# 二维数组的裁剪
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
# 行裁剪 从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片
print(arr[1, 1:4])
# 列裁剪 从第二个元素开始,对从索引 0 到索引 2(不包括)的元素进行切片
print(arr[0:2, 2])
# 行列裁剪 从两个元素裁切索引 1 到索引 4(不包括),这将返回一个 2-D 数组
print(arr[0:2, 1:4])
三、视图与副本
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
# 副本不受到对原始数组所做更改的影响。
x = a.copy()
x[0] = 0
print(x) # 0,2, 3, 4, 5, 6
print(a) # 1,2, 3, 4, 5, 6
# 视图受到对原始数组所做更改的影响。
x = a.view()
a[0] = 0
print(x) # 0,2, 3, 4, 5, 6
print(a) # 0,2, 3, 4, 5, 6
# 副本拥有数据,而视图不拥有数据
x = a.copy()
y = a.view()
print(x.base) # 返回none
print(y.base) # 0,2, 3, 4, 5, 6
四、数组拆分与搜索
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
# 将数组分为四个部分
newarr = np.array_split(arr, 4)
print(newarr)
# 搜索值为偶数的元素的索引
x = np.where(arr%2 == 0)
print(x)
五、数组过滤
import numpy as np
# 如果索引处的值为 True,则该元素包含在过滤后的数组中;
# 如果索引处的值为 False,则该元素将从过滤后的数组中排除。
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)
此外还可以直接从数组创建过滤器
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# 过滤奇数
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
六、数学运算
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = np.array([1, 2, 3, 4, 5, 6])
c = np.array([[1, 2, 3], [4, 5, 6],[7, 8, 9]])
# a.b
value = np.dot(a, b)
print(value)
# a,b的外积 a,b必须为一维向量
print(np.outer(a,b))
# a,b的张量积 结果为一维数组
print(np.kron(a, b))
# axb 向量必须是三维或者二维
print(np.cross(c, c))
# 矩阵的转置
print(np.transpose(c)) # or print(c.T)
# a**2
print(a**2)
# 矩阵a-矩阵b 矩阵a+矩阵b
print(a-b)
print(a+b)
# 求所有元素的和、求所有元素的最大值
print(a.sum())
print(a.max())