我正在学习Python中的科学提案的某些教程,我遇到过这种使用索引的方法:
import numpy as np
l=np.array([8,5,2,3])
print(l[:,None])此打印返回的内容为:
[[8]
[5]
[2]
[3]]这段代码的作用是显而易见的,我发现它对我的建议非常有用,但我从来没有想过要使用它,因为我不理解这种切片语法在说什么。
谁能给我解释一下这种切片的工作原理?
提前谢谢。
发布于 2018-01-16 01:09:24
:是所有元素的占位符,而None是np.newaxis,如果你想切片额外的形状,那么None会告诉numpy创建新的维度。
因此,编写示例并避免混淆的正确方法是:
import numpy as np
l = np.array([8, 5, 2, 3])
print(l[:, np.newaxis])发布于 2018-01-16 01:10:59
不,这是将数组维度从1D提升到2D,准确地说是列向量。最常见的方法是使用None or np.newaxis:
In [317]: l = np.array([8,5,2,3])
In [318]: l[:, np.newaxis]
Out[318]:
array([[8],
[5],
[2],
[3]])
In [319]: l.shape
Out[319]: (4,)
In [320]: l[:, np.newaxis].shape
Out[320]: (4, 1)但是,您也可以使用以下命令将其转换为行向量:
In [321]: l[np.newaxis, :]
Out[321]: array([[8, 5, 2, 3]])
In [322]: (l[np.newaxis, :]).shape
Out[322]: (1, 4)因此,:意味着在切片操作期间选择沿特定轴的数组中的所有元素。
有关详细信息,请参阅how np.newaxis work。
https://stackoverflow.com/questions/48267586
复制相似问题