numpy 的newaxis 和 concatenate函数应用解释及应用举例

简介: numpy 的newaxis 和 concatenate函数应用解释及应用举例

numpy 的newaxis 和 concatenate函数应用


1.np.newaxis()


np.newaxis 的功能是增加新的维度,但是要注意 np.newaxis 放的位置不同,产生的矩阵形状也不同。


通常按照如下规则:


np.newaxis 放在哪个位置,就会给哪个位置增加维度

x[:, np.newaxis] ,放在后面,会给列上增加维度 x[np.newaxis, :] ,放在前面,会给行上增加维度


用途: 通常用它将一维的数据转换成一个矩阵,这样就可以与其他矩阵进行相乘。

例1:这里的 x 是一维数据,其 shape是 4,可以看到通过在列方向上增加新维度,变成了 4 x 1 的矩阵,也就是在 shape 的后面发生了变化。

x = np.array([1, 2, 3, 4])
print(x.shape)
x_add = x[:, np.newaxis]
print(x_add.shape)
print(x_add)
>>>
(4,)
(4, 1)
[[1]
 [2]
 [3]
 [4]]


2.np.concatenate()


import numpy as np
x1 = np.random.normal(1,1,(5,4))
x2 = np.random.normal(1,1,(3,4))
print(x1)
print(x1.shape)
print(x2)
print(x2.shape)
con = np.concatenate([x1,x2],axis=0)
print(con)
print(con.shape)
输出结果为:
[[ 2.22806658  0.15277615  2.21245262  1.63831116]
 [ 1.30131232 -1.09226289 -0.65959394  1.16066688]
 [ 1.52737722  0.84587186  1.53041503  0.4584277 ]
 [ 1.56096219  1.29506244  3.08048523  2.06008988]
 [ 1.79964236  0.95087117  1.30845477 -0.2644263 ]]
(5, 4)
[[0.89383392 1.49502055 2.90571116 1.71943997]
 [1.44451535 1.87838383 1.4763242  0.82597179]
 [0.72629108 1.42406398 1.35519112 0.58121617]]
(3, 4)
[[ 2.22806658  0.15277615  2.21245262  1.63831116]
 [ 1.30131232 -1.09226289 -0.65959394  1.16066688]
 [ 1.52737722  0.84587186  1.53041503  0.4584277 ]
 [ 1.56096219  1.29506244  3.08048523  2.06008988]
 [ 1.79964236  0.95087117  1.30845477 -0.2644263 ]
 [ 0.89383392  1.49502055  2.90571116  1.71943997]
 [ 1.44451535  1.87838383  1.4763242   0.82597179]
 [ 0.72629108  1.42406398  1.35519112  0.58121617]]
(8, 4)

axis参数为指定按照哪个维度进行拼接,上述的例子中x1为[5,4] x2为[3,4],设置axis=0则代表着按照第一维度进行拼接,拼接后的尺寸为[8,4]除了第一维度的尺寸发生变化,其他维度不变,同时也说明,必须保证其他维度的尺寸是能对的上的,如果x1为[5,4],x2为[5,3],在这里如果还设置axis=1的话,则会报错,因为x1和x2的第二维度尺寸不相等,无法拼接。


按照axis=1的维度进行拼接,实例如下:

import numpy as np
x1 = np.random.normal(1,1,(5,4))
x2 = np.random.normal(1,1,(5,2))
print(x1)
print(x1.shape)
print(x2)
print(x2.shape)
con = np.concatenate([x1,x2],axis=1)
print(con)
print(con.shape)
输出结果如下:
[[ 1.06700795  2.49432822  0.13721596  0.86647501]
 [-0.24454185  0.83414428  2.06012125 -0.63322426]
 [ 2.01993142 -0.27599932  1.9101389   1.92564214]
 [ 0.12627442  0.97560762  2.00993226  2.02754602]
 [ 0.23883256  1.4805339  -0.83029287  1.37207756]]
(5, 4)
[[ 0.67988459  2.46464482]
 [ 1.19166015  2.16522311]
 [ 1.41193468 -0.01165058]
 [ 0.62496307  1.05706225]
 [ 0.85055712 -0.09588572]]
(5, 2)
[[ 1.06700795  2.49432822  0.13721596  0.86647501  0.67988459  2.46464482]
 [-0.24454185  0.83414428  2.06012125 -0.63322426  1.19166015  2.16522311]
 [ 2.01993142 -0.27599932  1.9101389   1.92564214  1.41193468 -0.01165058]
 [ 0.12627442  0.97560762  2.00993226  2.02754602  0.62496307  1.05706225]
 [ 0.23883256  1.4805339  -0.83029287  1.37207756  0.85055712 -0.09588572]]
(5, 6)

其实可以这么理解,axis=0,则表示合并后第一个维度数据要变(axis是从0开始计算的,即第一维表示0),axis=1,则表示合并后第二个维度的数据要变,axis=2,则表示合并后第三个维度数据要变。数据变换一般是两个数组相同维度数值相加。

-1就是按照最后一维度进行合并


3.应用


例如对图片进行means和std统计


image.png

目录
相关文章
|
2月前
|
Python
NumPy 教程 之 NumPy 统计函数 9
NumPy提供了多种统计函数,如计算数组中的最小值、最大值、百分位数、标准差及方差等。其中,标准差是一种衡量数据平均值分散程度的指标,它是方差的算术平方根。例如,对于数组[1,2,3,4],其标准差可通过计算各值与均值2.5的差的平方的平均数的平方根得出,结果为1.1180339887498949。示例代码如下: ```python import numpy as np print(np.std([1,2,3,4])) ``` 运行输出即为:1.1180339887498949。
121 50
|
28天前
|
机器学习/深度学习 算法 数据挖掘
NumPy有哪些应用场景
【10月更文挑战第22天】NumPy有哪些应用场景
72 2
|
1月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
30 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
2月前
|
Python
NumPy 教程 之 NumPy 统计函数 10
NumPy统计函数,包括查找数组中的最小值、最大值、百分位数、标准差和方差等。方差表示样本值与平均值之差的平方的平均数,而标准差则是方差的平方根。例如,`np.var([1,2,3,4])` 的方差为 1.25。
102 48
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 8
NumPy提供了多种排序方法,包括快速排序、归并排序及堆排序,各有不同的速度、最坏情况性能、工作空间和稳定性特点。此外,NumPy还提供了`numpy.extract()`函数,可以根据特定条件从数组中抽取元素。例如,在一个3x3数组中,通过定义条件选择偶数元素,并使用该函数提取这些元素。示例输出为:[0., 2., 4., 6., 8.]。
26 8
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 5
NumPy中的排序方法及特性对比,包括快速排序、归并排序与堆排序的速度、最坏情况性能、工作空间及稳定性分析。并通过`numpy.argmax()`与`numpy.argmin()`函数演示了如何获取数组中最大值和最小值的索引,涵盖不同轴方向的操作,并提供了具体实例与输出结果,便于理解与实践。
26 5
|
2月前
|
机器学习/深度学习 搜索推荐 算法
NumPy 教程 之 NumPy 排序、条件筛选函数 2
介绍NumPy` 中的排序方法与条件筛选函数。通过对比快速排序、归并排序及堆排序的速度、最坏情况性能、工作空间需求和稳定性,帮助读者选择合适的排序算法。此外,还深入讲解了 `numpy.argsort()` 的使用方法,并通过具体实例展示了如何利用该函数获取数组值从小到大的索引值,并据此重构原数组,使得其变为有序状态。对于学习 `NumPy` 排序功能来说,本教程提供了清晰且实用的指导。
36 7
|
2月前
|
算法 索引 Python
Numpy 的一些以 arg 开头的函数
Numpy 的一些以 arg 开头的函数
42 0
|
2月前
|
编解码 算法 计算机视觉
使用NumPy进行傅里叶变换:基础概念与实践应用
使用NumPy进行傅里叶变换:基础概念与实践应用
58 0
|
3月前
|
索引 Python
NumPy 教程 之 NumPy 统计函数 8
这段内容介绍了 NumPy 中的 `numpy.average()` 函数,该函数用于计算数组中元素的加权平均值。可以通过设置 `axis` 参数指定计算的轴,`weights` 参数用于指定权重,默认为等权重。示例展示了如何在一维和多维数组中使用此函数,并通过 `returned=True` 返回加权平均值和权重总和。
26 1