python的numpy模块的学习笔记

目录

1. numpy的索引和切片

2. numpy的科学计算

3.numpy的改变维度

4.numpy的增加合并数据

numpy的索引和切片

In [1]: import numpy

In [2]: import numpy as np

In [3]: x = np.arange(10)

In [4]: x
Out[4]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [5]: x = np.arange(20).reshape(4,5)# 生成0-20的四行五列的数组

In [6]: x
Out[6]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [7]: x = np.arange(10)

In [8]: x
Out[8]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [9]: print(x[0],x[1],x[4])
0 1 4

In [10]: x[-1]
Out[10]: 9

In [11]: x[0:4]
Out[11]: array([0, 1, 2, 3])

In [12]: x[-3:]
Out[12]: array([7, 8, 9])

In [13]: x[::-1]
Out[13]: array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

In [14]: x = np.arange(20).reshape(4,5)

In [15]: x
Out[15]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [17]: x[0,0]
Out[17]: 0

In [18]: x[0,1]
Out[18]: 1

In [19]: x[-1,1]
Out[19]: 16

In [20]:

In [20]: x[2]
Out[20]: array([10, 11, 12, 13, 14])

In [21]: x[:-1]
Out[21]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

In [22]: x[:]
Out[22]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [23]: x[0][0]
Out[23]: 0

In [24]: x
Out[24]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [25]: x[:,2]
Out[25]: array([ 2,  7, 12, 17])

In [26]: import random

In [27]: arr = np.random.randint(1,101,10)

In [28]: arr
Out[28]: array([63, 92, 88, 11, 38,  1, 54, 92, 18, 84])

In [29]: arr.argsort()
Out[29]: array([5, 3, 8, 4, 6, 0, 9, 2, 1, 7], dtype=int64)

In [30]: arr.argsort()# 返回的是对应的最大数的下标
Out[30]: array([5, 3, 8, 4, 6, 0, 9, 2, 1, 7], dtype=int64)

In [31]: arr.argsort()# sort的兄弟,将原数组排序但不改变原来数组,返回一个数组其由原数组的下标组成
Out[31]: array([5, 3, 8, 4, 6, 0, 9, 2, 1, 7], dtype=int64)

In [32]: arr.argsort(reverse= True)# argsort不能像sort哪像传递一个reverse参数将其逆序排序
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-2462b6925a8d> in <module>
----> 1 arr.argsort(reverse= True)# sort的兄弟,将原数组排序但不改变原来数组,返回一个数组其由原数组的下标组成

TypeError: 'reverse' is an invalid keyword argument for argsort()

In [33]: arr[arr.argsort()[-3:]]
Out[33]: array([88, 92, 92])

In [34]: X = np.arange(20).reshape(4,5)

In [35]: X
Out[35]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
       
In [37]: X[[0,2,3],[0,2,4]]
Out[37]: array([ 0, 12, 19])

In [38]: X[[0,2,3],[0,2,4]]# 前面一个是行,后面一个是列,两个组合成一个新的坐标定位到指定的元素,所以返回的是一个一维数组
Out[38]: array([ 0, 12, 19])

In [39]: X[[0,2],[1,3,4]]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-39-795854cfb94b> in <module>
----> 1 X[[0,2],[1,3,4]]

IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (2,) (3,)

In [40]: # 由此可见前后两个数组的长度要一致,不然会报错

In [41]: x
Out[41]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
bool数据类型
In [43]: x = np.arange(10)

In [44]: x
Out[44]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [45]: x>5
Out[45]:
array([False, False, False, False, False, False,  True,  True,  True,
        True])

In [46]: # 上面的就是bool数组

In [58]: x
Out[58]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [59]: x[x<=5] = 0

In [60]: x[x>5] = 1

In [61]: x
Out[61]: array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1])

In [62]: X
Out[62]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [63]: X > 5
Out[63]:
array([[False, False, False, False, False],
       [False,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True]])

In [64]: X[X > 5]
Out[64]: array([ 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

In [65]: x
Out[65]: array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1])

In [66]: x = np.arange(10)

In [67]: condition = (x%2==0)|x==0

In [68]: condition
Out[68]:
array([False, False, False, False, False, False, False, False, False,
       False])

In [69]: x
Out[69]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [70]: condition
Out[70]:
array([False, False, False, False, False, False, False, False, False,
       False])

In [71]: condition = (x%2==0)|(x==0) #组合条件的使用要在条件符的左右都要加上括号,不然就像70行那样出现全False的现象

In [72]: condition
Out[72]:
array([ True, False,  True, False,  True, False,  True, False,  True,
       False])

In [73]:

In [73]: X
Out[73]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [74]: X[2] = 600

In [75]: X
Out[75]:
array([[  0,   1,   2,   3,   4],
       [  5,   6,   7,   8,   9],
       [600, 600, 600, 600, 600],
       [ 15,  16,  17,  18,  19]])

In [76]: X[,2] = 600# 要想改变整列,要在逗号前面加上冒号:
  File "<ipython-input-76-65662dea2d9e>", line 1
    X[,2] = 600
      ^
SyntaxError: invalid syntax


In [77]: X[",2] = 600
  File "<ipython-input-77-f23c40fc3fef>", line 1
    X[",2] = 600
                ^
SyntaxError: EOL while scanning string literal


In [78]: X[:,2] = 600

In [79]: X
Out[79]:
array([[  0,   1, 600,   3,   4],
       [  5,   6, 600,   8,   9],
       [600, 600, 600, 600, 600],
       [ 15,  16, 600,  18,  19]])

In [80]: arr
Out[80]: array([63, 92, 88, 11, 38,  1, 54, 92, 18, 84])

In [81]: arr[[92,88]]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-81-52e6ef6fc7ea> in <module>
----> 1 arr[[92,88]]

IndexError: index 92 is out of bounds for axis 0 with size 10

In [82]: arr[[0,1]]
Out[82]: array([63, 92])

In [83]: arr.sort()

In [84]: arr
Out[84]: array([ 1, 11, 18, 38, 54, 63, 84, 88, 92, 92])

In [85]: arr.argsort()
Out[85]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int64)

numpy随机数函数
numpy.random.rand(d0, d1, …, dn)


In [86]: np.random.seed(100)# 生成随机数种子,确保每次生成的随机数都是随机的

In [87]: np.random.rand(3,5)# 生成一个三行五列的值在0-1之间的随机数数组
Out[87]:
array([[0.54340494, 0.27836939, 0.42451759, 0.84477613, 0.00471886],
       [0.12156912, 0.67074908, 0.82585276, 0.13670659, 0.57509333],
       [0.89132195, 0.20920212, 0.18532822, 0.10837689, 0.21969749]])
	   
In [93]: np.random.rand(2,3,4)# 生成两大块,每一块都是由三行五列的数组组成
Out[93]:
array([[[0.07898787, 0.31135313, 0.63238359, 0.69935892],
        [0.64196495, 0.92002378, 0.29887635, 0.56874553],
        [0.17862432, 0.5325737 , 0.64669147, 0.14206538]],

       [[0.58138896, 0.47918994, 0.38641911, 0.44046495],
        [0.40475733, 0.44225404, 0.03012328, 0.77600531],
        [0.55095838, 0.3810734 , 0.52926578, 0.9568769 ]]])

numpy.random.randn(d0, d1, …, dn)

In [94]: np.random.randn(5)# 生成0左右的满足正态分布的5个数
Out[94]: array([ 0.37196757,  0.35975395, -0.14039647, -0.44373851,  0.56877016])

In [95]: np.random.randn(3,5)# 生成由三行五列的数组组成
Out[95]:
array([[ 0.53848877,  1.31557418,  1.4789783 ,  0.22142626, -1.11789416],
       [-0.18499993, -0.43118745,  0.14253625, -1.49639345,  0.30687456],
       [-0.04634723,  0.41714428, -0.60377052,  0.68596725,  0.85997379]])

In [96]: np.random.randn(2,3,5)# randn满足正态分布,生成两大块,每一块都是由三行五列的数组组成
Out[96]:
array([[[ 0.19155544,  1.17822793,  0.60028357, -1.84465986,
          0.04258809],
        [-0.02408499,  0.38405784, -0.0490925 , -1.60169118,
         -0.13876257],
        [ 0.01208627, -1.29814417, -0.12888604, -0.28292163,
         -0.17916825]],

       [[ 0.67575177,  2.38059534, -1.14670086, -0.29114335,
         -0.85422577],
        [ 0.86340647, -0.31638123, -0.90222577, -0.73856239,
         -0.39533888],
        [ 0.08420085, -0.18562245,  1.10843923,  1.29821024,
          0.24722299]]])

numpy.random.randint(low[, high, size=, dtype=])

In [97]: np.random.randint(100)# 生成一个0-100的整数
Out[97]: 93

In [98]: np.random.randint(90,100)# 生成一个90-100的整数
Out[98]: 92

In [99]: np.random.randint(2,90,100)# 
Out[99]:
array([84,  9,  4, 65,  4, 89, 19, 76, 55, 32, 69, 30, 39, 84, 19, 12, 15,
       83, 27, 68, 17, 13, 40, 24, 57, 59, 89, 53, 50, 55, 19, 67, 44, 46,
       18, 53, 56, 57, 85, 44, 63, 39, 82,  4, 64, 83, 18, 72, 55, 49, 50,
       11, 51, 55, 36,  5, 13, 51, 31, 38, 69, 28, 54, 38, 75, 33, 87, 70,
       85, 73, 63, 38, 44, 15, 50, 84, 34, 40, 42, 55, 16, 40, 88, 39,  2,
       61, 43, 46, 21, 78, 68, 15, 89, 67, 70, 56,  2, 89, 85, 12])
       
In [4]: np.random.randint(1,100,size=(1,5))# 生成一个1-100的一行五列的数组
Out[4]: array([[66,  5, 35, 71, 71]])

numpy.random.random(size=)

In [5]: np.random.random(5)# 生成0-1的五个随机数
Out[5]: array([0.39925098, 0.17363531, 0.53192093, 0.45290461, 0.56029424])

In [6]: np.random.random(3,5)# 要指定行和列就要在参数中加入size=()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-de6868792412> in <module>
----> 1 np.random.random(3,5)

mtrand.pyx in numpy.random.mtrand.RandomState.random()

TypeError: random() takes at most 1 positional argument (2 given)

In [7]: np.random.random(size=(3,5))# 加入size=()后就可生成三行五列的数组,也可以生成多块的数组
Out[7]:
array([[0.70770948, 0.91207859, 0.55372324, 0.37367461, 0.12228909],
       [0.26319125, 0.81099784, 0.43409048, 0.42806711, 0.22827341],
       [0.74741093, 0.89216893, 0.85213802, 0.85259035, 0.87134415]])

In [8]: np.random.random(size=(2,3,5))
Out[8]:
array([[[0.67864221, 0.22001716, 0.43813613, 0.16184834, 0.74331783],
        [0.44713193, 0.99737105, 0.35041559, 0.8868409 , 0.11933391],
        [0.31406661, 0.72283009, 0.62320291, 0.43899082, 0.66207874]],

       [[0.23873932, 0.26411096, 0.33015157, 0.22685903, 0.19963779],
        [0.26039453, 0.87693293, 0.32243481, 0.0792408 , 0.38233775],
        [0.25042082, 0.89432103, 0.

numpy.random.choice(a, size[, replace=, p=])

In [9]: np.random.choice(5,3)# 从前面一个参数中挑选数据,参数可以是整数也可以是数组,如果是整数,则从其range()中挑选数字
Out[9]: array([2, 1, 0])

In [10]: np.random.choice([123,321],2)
Out[10]: array([123, 321])

In [11]: np.random.choice(10,(3,5))# 可以创建多维数组,前提是要在多维数组前面加上括号
Out[11]:
array([[3, 7, 4, 9, 4],
       [2, 8, 6, 4, 8],
       [2, 4, 2, 7, 5]])
	   
	   In [12]: arr =np.arange(20)

In [13]: arr
Out[13]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])

numpy.random.shuffle(x)

In [15]: np.random.suffle(arr)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-15-4358f4e4f534> in <module>
----> 1 np.random.suffle(arr)

AttributeError: module 'numpy.random' has no attribute 'suffle'

In [16]: np.random.shuffle(arr)# 将原数组打乱

In [17]: arr
Out[17]:
array([17,  6,  3, 18,  9, 13,  4, 16, 11,  7, 10, 12,  2,  5, 15,  0,  8,
        1, 14, 19])

In [18]: arr = np.arange(20).reshape(3,5)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-18-88595c1cf707> in <module>
----> 1 arr = np.arange(20).reshape(3,5)

ValueError: cannot reshape array of size 20 into shape (3,5)# 出现这个错误的原因是 数据有二十个,但是却要求分成三行五列,无法做到,所以会报错

In [19]: arr = np.arange(20).reshape(4,5)

In [20]: arr
Out[20]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [21]: arr.random.shuffle()# shuffle的使用是np.random.shuffle(arr)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-21-632a326cc8c1> in <module>
----> 1 arr.random.shuffle()

AttributeError: 'numpy.ndarray' object has no attribute 'random'

In [22]: np.random.shuffle(arr)# shuffle对多维数组的打乱只是在行之间打乱,行内不打乱

In [23]: arr
Out[23]:
array([[10, 11, 12, 13, 14],
       [ 0,  1,  2,  3,  4],
       [15, 16, 17, 18, 19],
       [ 5,  6,  7,  8,  9]])

numpy.random.permutation(x)

In [24]: np.random.permutation(10)# permutation(10)是生成0-10的数组,并将其随机排序,相当于,arr = np.arange(10),np.random.shuffle(arr)
Out[24]: array([6, 3, 7, 0, 8, 2, 1, 4, 5, 9])

In [25]: arr = np.arange(10).reshape(2,5)

In [26]: arr
Out[26]:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

In [27]: np.random.permutation(arr)#
Out[27]:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])


In [28]: np.random.permutation(arr)
Out[28]:
array([[5, 6, 7, 8, 9],
       [0, 1, 2, 3, 4]])

In [29]: arr
Out[29]:
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])# 说明在permutation后生成的是原数组的copy,原来的数组不会改变

numpy.random.uniform(low=0.0, high=1.0, size=None)平均分布
numpy.random.normal(loc=0.0, scale=1.0, size=None)高斯分布

In [42]: numpy.random.uniform(low=0.0, high=1.0, size=None)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-42-f082a9e3d12d> in <module>
----> 1 numpy.random.uniform(low=0.0, high=1.0, size=None)

NameError: name 'numpy' is not defined

In [43]: np.random.uniform(0,10,size=(2,5))
Out[43]:
array([[2.83152316, 4.31476876, 4.67180992, 4.38012   , 6.49968333],
       [4.25484468, 3.99455413, 0.67276926, 2.04183267, 5.06723771]])

In [44]: np.random.normal(-10,10,size=(2,10))
Out[44]:
array([[  2.70299431,   9.33367226,  -9.01903493,  -9.35720587,
        -16.85959447,  -9.22159077, -17.40660452,  -9.17373511,
        -10.49564623,  -5.73129811],
       [ -9.03227025, -15.18617316, -27.68724923,   2.24774268,
          3.9663481 , -13.29659365,  -5.55824628,   7.13094563,
        -12.95769011,  -9.23706864]])

运用

import matplotlib.pyplot as plt
x = np.random.linspace(-10,10,100)
y = np.sin(x)
plt.plot(x,y)
plot.show()# 完美的图线

x = np.random.lonspace(-10,10,100)
y =np.sin(x) + np.random.rand(len(x))
plt.plot(x,y)
plot.show()# 加入了噪音,图线变得不规整

科学计算

arr.sum([axis=0,1])求和
arr,cumsum([axis=0,1])累加
In [4]: arr = np.arange(12).reshape(3,4)

In [5]: arr
Out[5]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [6]: arr.sum()# 不指定axis,则将多维数组看成一维数组进行加和
Out[6]: 66

In [7]: arr.cumsum()
Out[7]: array([ 0,  1,  3,  6, 10, 15, 21, 28, 36, 45, 55, 66], dtype=int32)

In [8]: arr.sum(axis=0)# 指定了axis=0是列优先加和
Out[8]: array([12, 15, 18, 21])

In [9]: arr.sum(axis=1)# 指定了axis=0是行优先加和
Out[9]: array([ 6, 22, 38])

In [10]: arr.cumsum(axis=0)
Out[10]:
array([[ 0,  1,  2,  3],
       [ 4,  6,  8, 10],
       [12, 15, 18, 21]], dtype=int32)

In [11]: arr.cumsum(axis=1)
Out[11]:
array([[ 0,  1,  3,  6],
       [ 4,  9, 15, 22],
       [ 8, 17, 27, 38]], dtype=int32)

arr.prod(axis=0.1)乘积
arr.cumprod(axis=0.1)累乘

In [12]: arr.prod()# 乘积
Out[12]: 0

In [13]: arr.cumprod()# 累乘
Out[13]: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)

In [14]: arr.prod(axis=0)
Out[14]: array([  0,  45, 120, 231])

In [15]: arr.prod(axis=1)
Out[15]: array([   0,  840, 7920])

In [16]: arr.cumprod(axis=0)
Out[16]:
array([[  0,   1,   2,   3],
       [  0,   5,  12,  21],
       [  0,  45, 120, 231]], dtype=int32)

In [17]: arr.cumprod(axis=1)
Out[17]:
array([[   0,    0,    0,    0],
       [   4,   20,  120,  840],
       [   8,   72,  720, 7920]], dtype=int32)

np.median(arr)中位数
np.mean(arr)平均值
np.percentile(arr,[25])去arr数组第25%位置上的数据
np.quantle(arr,[0.25])同上
np.std(arr)标准差
np.var(arr)方差
np.average(arr,weights=)加权平均数

In [18]: np.median(arr)# 中位数
Out[18]: 5.5

In [19]: np.percentile(arr,[25,50,75])# 分别取arr第25%,50%,75%的数据
Out[19]: array([2.75, 5.5 , 8.25])

In [20]: np.quantile(arr,[0.25,0.50,0.75])
Out[20]: array([2.75, 5.5 , 8.25])

In [21]: np.mean(arr)# 平均值
Out[21]: 5.5

In [23]: np.std(arr)# 标准差
Out[23]: 3.452052529534663

In [24]: np.var(arr)# 方差
Out[24]: 11.916666666666666

In [25]: weight = np.random.rand(*arr.shape)# 这里的arr前面要加上* ,作用是将多维数组分割传入方法中

In [26]: np.average(arr,weights = weight)# 求加权平均数
Out[26]: 4.748652433748566

运用

数据标准化:
●对于机器学习、神经网络来说,不同列的量纲应该相同,训练收敛的更快;
●比如商品的价格是0到10元、销量是1万到10万个,这俩数字没有可比性,因此需要先都做标准化;
●不同列代表不同的特征,因此需要axis=0做计算
●标准化-般使用A = (A- mean(A, axis=0)) I std(A, axis=0)公式进行

In [37]: arr2 = np.random.randint(1,100,size=(3,4))

In [38]: arr2
Out[38]:
array([[62,  3, 30, 33],
       [49,  1, 43, 68],
       [12, 32, 34, 58]])

In [48]: mean = np.mean(arr2,axis=0)

In [50]: std = np.std(arr2,axis=0)

In [51]: fenzi = arr - mean # 这里运用了广播,arr是二维数组,mean是一维数组,两者相减,将mean复制为二维数组再将两者进行相减

In [52]: result = fenzi/std

In [53]: result
Out[53]:
array([[-1.93562826, -0.77652433, -6.19270733, -3.3968311 ],
       [-1.74678648, -0.49415185, -5.45694012, -3.12508461],
       [-1.5579447 , -0.21177936, -4.72117291, -2.85333813]])

改变维度

arr[np.newaxis,:]
np.expand_dims(arr,axis=0,1)
np.reshape(arr,())

In [2]: arr = np.arange(5)

In [3]: arr
Out[3]: array([0, 1, 2, 3, 4])

In [4]: arr[np.newaxis,:]
Out[4]: array([[0, 1, 2, 3, 4]])

In [5]: arr.shape
Out[5]: (5,)

In [6]: arr[np.newaxis,:].shape
Out[6]: (1, 5)

In [7]: np.expand_dims(arr,axis=0)# 行的维度上增加一
Out[7]: array([[0, 1, 2, 3, 4]])

In [8]: np.expand_dims(arr,axis=0).shape
Out[8]: (1, 5)

In [9]: np.expand_dims(arr,axis=1).shape
Out[9]: (5, 1)

In [10]: np.expand_dims(arr,axis=1)# 列的温度上,根据原来异味数据的长度扩大
Out[10]:
array([[0],
       [1],
       [2],
       [3],
       [4]])

In [11]: np.reshape(arr,(1,-1))# 默认-1为元素总个数
Out[11]: array([[0, 1, 2, 3, 4]])

In [12]: np.reshape(arr,(1,5))
Out[12]: array([[0, 1, 2, 3, 4]])

增加和合并数组

np.concatenate([arr1,arr2,...],axis=1)
np.vs.stack([arr1.arr2],...)
np.row_satck([arr1,arr2,...])三个都是列相同,进行行的合并
In [18]: a = np.arange(12).reshape(3,4)

In [19]: b = np.random.randint(10,20,size=(4,4))

In [20]: a
Out[20]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [21]: b
Out[21]:
array([[11, 16, 11, 15],
       [16, 17, 12, 19],
       [12, 19, 14, 12],
       [12, 18, 19, 12]])

In [22]: np.vstack([a,b])
Out[22]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [11, 16, 11, 15],
       [16, 17, 12, 19],
       [12, 19, 14, 12],
       [12, 18, 19, 12]])

In [23]: np.row_stack([a,b])
Out[23]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [11, 16, 11, 15],
       [16, 17, 12, 19],
       [12, 19, 14, 12],
       [12, 18, 19, 12]])
       
In [26]: np.concatenate([a,b])
Out[26]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [11, 16, 11, 15],
       [16, 17, 12, 19],
       [12, 19, 14, 12],
       [12, 18, 19, 12]])

np.hstack([arr1,arr2…])
np.column_stack([arr1,arr2…])
np.concatenate9([arr1,arr2,…],axis=0)三个都是将数组进行行相同,进进行列的合并

In [29]: a = np.arange(16).reshape(4,4)

In [30]: a
Out[30]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

In [31]: b
Out[31]:
array([[11, 16, 11, 15],
       [16, 17, 12, 19],
       [12, 19, 14, 12],
       [12, 18, 19, 12]])

In [32]: np.hstack([a,b])
Out[32]:
array([[ 0,  1,  2,  3, 11, 16, 11, 15],
       [ 4,  5,  6,  7, 16, 17, 12, 19],
       [ 8,  9, 10, 11, 12, 19, 14, 12],
       [12, 13, 14, 15, 12, 18, 19, 12]])

In [33]: np.column_stack([a,b])
Out[33]:
array([[ 0,  1,  2,  3, 11, 16, 11, 15],
       [ 4,  5,  6,  7, 16, 17, 12, 19],
       [ 8,  9, 10, 11, 12, 19, 14, 12],
       [12, 13, 14, 15, 12, 18, 19, 12]])

In [34]: np.concatenate([a,b],axis=0)
Out[34]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [11, 16, 11, 15],
       [16, 17, 12, 19],
       [12, 19, 14, 12],
       [12, 18, 19, 12]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值