您的位置:

numpy中的numpysize详解

一、numpysize简介

在numpy中,numpysize是指数组的形状大小,也就是数组的维度。比如一个二维数组np.array([[1,2], [3,4]])的numpysize为(2,2),表示该数组有两行两列。

二、numpysize的获取

可以通过numpy的shape属性获取数组的numpysize信息:

import numpy as np

arr = np.array([[1,2], [3,4]])
print(arr.shape)  #输出:(2,2)

也可以使用numpy的ndim属性获取数组的维度数:

import numpy as np

arr = np.array([[1,2], [3,4]])
print(arr.ndim)  #输出:2

三、numpysize的修改

可以使用reshape方法修改数组的numpysize。reshape方法会返回一个新的数组,新数组的numpysize和原数组不同。比如将原数组np.array([[1,2], [3,4]])修改为一维数组:

import numpy as np

arr = np.array([[1,2], [3,4]])
new_arr = arr.reshape(4)
print(new_arr) #输出:[1 2 3 4]
print(new_arr.shape) #输出:(4,)

除了reshape方法,还可以使用resize方法在不返回新数组的情况下进行numpysize修改:

import numpy as np

arr = np.array([[1,2], [3,4]])
arr.resize(4)
print(arr) #输出:[1 2 3 4]
print(arr.shape) #输出:(4,)

四、numpysize和广播机制

在numpy中,当两个数组进行运算时,会遵循广播机制进行运算。其中,广播机制会根据两个数组的numpysize进行扩展。具体来说,首先会将两个数组进行维度扩充,直到两个数组的numpysize相同;其次,如果两个数组在某个维度的numpysize都为1,那么会对该维度进行扩展,直到两个数组在该维度的numpysize相同。

比如一个三维数组a的numpysize为(2,3,1),而一个二维数组b的numpysize为(3,1),则对a和b进行加法运算时,b会被扩展为(1,3,1),然后再扩展为(2,3,1)。示例如下:

import numpy as np

a = np.array([[[1],[2],[3]],[[4],[5],[6]]])
b = np.array([[10,20,30],[100,200,300]])
c = a + b
print(c)
'''
输出:
array([[[ 11,  21,  31],
        [101, 201, 301],
        [nan, nan, nan]],

       [[ 14,  24,  34],
        [104, 204, 304],
        [nan, nan, nan]]])
'''

可以看到,b在第一维和第三维都被扩展为1,最后变成了(2,3,1),然后a和b依次相加。

五、结语

本文从numpysize的简介、获取、修改、和广播机制等几个方面对numpysize进行了详细的讲解。numpysize在numpy中起到了非常重要的作用,深入理解numpysize有助于我们更好地理解数组的操作和运算。