import numpy as np #创建ndarray# data1 = [6, 5, 7, 1, 3]# arrl = np.array(data1)# print(arrl)#多维列表创建ndarraydata2 = [[3, 4, 2], [1, 8, 9]]arr2 = np.array(data2)## print(arr2)## asrr1 = np.asarray([2, 3, 4])# print(asrr1)## asrr2 = np.asarray([[2, 1, 3, 4], [2, 9, 9, 1]])## print(asrr2) #np.array() 和 np.asarray()#array()创建时是对原始对象的一份copy创建的,而asarray当输入时ndarray并不进行复制操作,# 如果改变新创建的数组,则原始数组也会跟着改变。# arr0 = np.zeros((2, 3))# arr11 = np.array(arr0)# arr11[0][0] = 100# print(arr11)# print(arr0)## arr12 = np.asarray(arr0)# arr12[0][0] = 200# print(arr12)# print(arr0) #创建全0元素的ndarray # zeros1 = np.zeros(4)# zeros2 = np.zeros((3, 4))## ones1 = np.ones(4)# ones2 = np.ones((3, 4))## print(zeros1)# print(zeros2)## print(ones1)# print(ones2) #empty函数 用来创建一个没有任何值得数组# empty1 = np.empty((3, 4))# print(empty1)## #创建对角矩阵# eye1 = np.eye(4)## print(eye1) # array将输入数据(列表、元组、数组或其他序列类型)转换为ndarray# asarray同array如果当输入是ndarray则不进行复制# arange类型python中的range,但返回的是一个ndarray,并不是列表# ones,ones_like 前者返回是1的数组,后者以另一数组为参数,根据其形状和dtype返回全为1的数组# zeros, zeros_like 同上,创建新数组# eye, identity 创建一个正方的N*N的矩阵,对角为1,其余为0 # print(arr2.shape)## print(arr2.dtype)## int_arr = arr2.astype(np.int64)# print(int_arr.dtype) # print(arr2 + 3)# print(arr2 * 1.2) arr3 = np.array([[2, 1, 4],[1, 5, 9]]) # print(arr3)## print(arr2 * arr3)# print(arr3 + arr2)## print(np.add(arr2, arr3)) #数据索引# print(arr2[0])# print(arr2[0][1])# print(arr2[0,1]) #切片 a = [1, 2, 3, 4, 5] # print(a[2:4])## print(arr2)## print(arr2[0][1:3])## print(arr2[0:1, :])# print(arr2[0:1][:]) # split1 = arr3[:2, :2]# split1[0][0] = 6# # print(split1)# #布尔型索引# words = np.array(list(‘abacbad‘))# print(words)data = np.random.randn(7, 4)## print(words == ‘a‘)# #布尔数组的长度必须跟索引轴的长度一致,此外还可以将布尔型索引和切片混合使用# print(data[words == ‘a‘])## print(data[data > 0])## print(data[(data > 0) & (data < 1)])## data[(data > 0) & (data < 1)] = 3## print(data) arr = np.empty((8, 4))for i in range(8): arr[i] = i# print(arr)## print(arr[[3, 5, 1, 6]]) arr = np.arange(32).reshape([8, 4]) # print(arr) # print(arr[[1, 5, 7, 2], [0, 3, 1, 2]])## print(arr[[1, 5, 7, 2]][:, [0, 2, 1, 3]]) # 花式索引和数组切片不一样,花式索引是将数据复制到新的数组中,而切片只是原始数据的一份视图,改变切片数据会改变原始数据,# 而改变花式索引产生的数组并不会改变原始数据,a = arr[np.ix_([1, 5, 7, 2], [0, 2, 1, 3])]print(a) a[0][0] = 10000# print(a)## print(arr[np.ix_([1, 5, 7, 2],[0, 2, 1, 3])]) #通用函数#对数组进行元素级的运算的函数# np.exp(data) 指数函数运算 # np.abs(data) 取绝对值# np.square(data) 取平方# np.sqrt(np.square(data)) 开根号
原文地址:https://www.cnblogs.com/shiyihan/p/10520374.html
时间: 2024-10-02 02:42:57