之所以这里是第三天,是因为昨天比赛去了,然后成绩嘛!咳咳咳,不是很理想,昨天总结反思了一下,调整一下学习方式和方向,争取后面的比赛赛出成绩!在哪里跌倒就不能在同一个地方跌倒两次!毕竟咋是程序猿,啥问题没碰见过!好吧,我们接着学习这玩意!
arrA = np.array([1,2,3])
arrB = np.array([4,5,6])
nums = np.vstack([arrA,arrB])
print(nums)
这里的vstack函数就是将两个数组上下合并,不过注意的是,这里合成出来是矩阵,所以两个数组要等长!然后参数的话是一个复合型的数据类型,也就是说数据不一定一致,而且合并的个数也可以不定下来!
arrA = np.array([1,2,3,4])
arrB = np.array(['hapi',5,6,5])
arrC = np.array([7,8,9,10])
# nums = np.vstack([arrA,arrB])
nums = np.vstack([arrA,arrC,arrB])
print(nums)
合并顺序也是按照序列来合并的!
arrA = np.array([1,2,3])
# arrB = np.array(["hello",4,5])
arrN = np.array([11,21,31])
arrC = np.array([4,5,6,7])
nums = np.hstack((arrA,arrN,arrC))
print(nums)
这里简单说一下就好,长度不用等长,原因也很明显,这都横向合并了,长度本来就在改变,还在乎一个长度不等长吗?其他都差不多,之所以有一个arrB在这,大家可以想想,和上面数据有什么不同!
changeNum1 = nums[np.newaxis,:]
changeNum2 = nums[:,np.newaxis]
print(changeNum1)
print(nums.shape)
print(changeNum1.shape)
print("---------------------------------")
print(changeNum2)
print(nums.shape)
print(changeNum2.shape)
这里的nums就是上面的数组
可以对比一下,这里的转置有什么不同,对于np.newaxis,:是横向转置,也就是一个横向的矩阵(1*10),而另一个就是:,np.newaxis是纵向的,生成的是一个(10*1)的矩阵!
arr1 =np.array([1,2,3])
arr2 = np.array([4,5,6])
nums1 = arr1[np.newaxis,:]
nums2 = arr2[np.newaxis,:]
print(nums1)
print(nums2)
result = np.concatenate([nums1,nums2],axis=1)
print(result)
横向合并嘛,意思很明确,就是加列,这里注意的是两个转置矩阵的行数得是相同的,可想而知,加列嘛,肯定每一列的数字是一样多的吧!
result = np.concatenate([nums1,nums2],axis=0)
这里注意的就是,原来的矩阵列数是相同的!
nums = np.arange(1,17,1).reshape(4,4)
print(nums)
print(np.split(nums,2,axis=0))
print(np.split(nums,4,axis=1))
先上结果
参数是values,切的对象是谁?几等分?在什么方向上?
这就很容易理解了!切完还是矩阵!注意的是,等分就是等分,别来小数,简单数学!
这有点麻烦!
print(np.vsplit(nums,2))
print(np.hsplit(nums,4))
上面提到合并,这里就可以拆分!和np.split一致
print(np.array_split(nums, 5, axis=1))
这里不能在细分了,直接用空的来凑数,多了的话先前面的合并一起显示出来!后面的轮不到!
在=的基础上,多少个对象都是会有关联的!
而copy才会是生成一个新的数据出来
nums = np.arange(1, 17, 1).reshape(4, 4)
print(nums)
temp = nums
temp[0][1] = 0
print(nums)
这类似啥!引用数据对象吧!也就是硬链接!
nums = np.arange(1, 17, 1).reshape(4, 4)
print(nums)
temp = np.copy(nums)
temp[0][1] = 0
print(temp)
print(nums)
这就是一个新的对象,与之前的数据是一个软连接!
a = np.array([[0, 0, 0],
[10, 10, 10],
[20, 20, 20],
[30, 30, 30]])
b = np.array([0, 1, 2])
print(a + b)
不难发现,这里的每一行都加上了b数组的值!也就是两个数组的横方向上的维度是一致的话,就会向列维度高的维度去广播运算!
arr = np.array([1,2,0,2,3,9,6,5,8])
print(np.bincount(arr))
0出现一次,所以第一个数就是1,以此类推!
好吧!这里我就是小白!等我啃啃底层继续学习!
基本的numpy就要到这里结束了!但这才是人工智能的第一步,也将是成就自己的第一步,多多巩固,这不是网文,而是名著,需要细细品味,反复琢磨!接下来还有一场比赛,日程的话我也要做调整了,不在同一地方摔两次!这地方就是比赛!之前计划一个项目在刚刚结束比赛后也要上了!不过,时间就是用来规划的!一起努力!!!
记录于 2022 04 10