numpy.ravel
numpy.ravel(a,order='C')
返回一个连续的展平的(一维)数组。
参数:
a:一个ndarray。
order:{‘C’,’F’, ‘A’, ‘K’},可选。C表示按照C风格索引元素(最后一个轴索引变化最快,第一个轴索引变化最慢)。F表示按照Fortran风格索引元素(第一个索引变化最快,最后一个索引变化最慢)。注意,“C”和“F”选项不考虑底层数组的内存布局,仅参考轴索引顺序。A意味着根据内存布局自动选择C或F(比如:a是一段以Fortran风格连续的内存,那么就用F)。'K’意味着按照它们发生在内存中的顺序读取元素,除了当步幅为负数时反转数据。 默认情况下,使用’C’索引顺序。
import numpy as np
def fun(x):
print("origin")
print(x)
print("reshape(-1)")
print(x.reshape(-1))
print("order='A'")
print(np.ravel(x, order='A'))
print("order='C'")
print(np.ravel(x, order='C'))
print("order='F'")
print(np.ravel(x, order='F'))
print("order='K'")
print(np.ravel(x, order='K'))
print()
x = np.array([[1, 2, 3], [4, 5, 6]])
fun(x)
fun(x.T)
y = np.arange(12).reshape(2, 3, 2).swapaxes(1, 2)
fun(y)
origin
[[1 2 3]
[4 5 6]]
reshape(-1)
[1 2 3 4 5 6]
order='A'
[1 2 3 4 5 6]
order='C'
[1 2 3 4 5 6]
order='F'
[1 4 2 5 3 6]
order='K'
[1 2 3 4 5 6]
origin
[[1 4]
[2 5]
[3 6]]
reshape(-1)
[1 4 2 5 3 6]
order='A'
[1 2 3 4 5 6]
order='C'
[1 4 2 5 3 6]
order='F'
[1 2 3 4 5 6]
order='K'
[1 2 3 4 5 6]
origin
[[[ 0 2 4]
[ 1 3 5]]
[[ 6 8 10]
[ 7 9 11]]]
reshape(-1)
[ 0 2 4 1 3 5 6 8 10 7 9 11]
order='A'
[ 0 2 4 1 3 5 6 8 10 7 9 11]
order='C'
[ 0 2 4 1 3 5 6 8 10 7 9 11]
order='F'
[ 0 6 1 7 2 8 3 9 4 10 5 11]
order='K'
[ 0 1 2 3 4 5 6 7 8 9 10 11]
numpy.ndarray.ravel
numpy.ndarray.ravel(order='C')
将ndarray展平,和numpy.ravel
功能相同。
numpy.ndarray.flatten
numpy.ndarray.flatten(order='C')
与numpy.ndarray.flatten
的区别在于numpy.ndarray.flatten
返回的是一个拷贝(copy),而numpy.ndarray.ravel
返回的是视图(view),会改变原来的ndarray。
import numpy as np
x = np.array([[1, 2], [3, 4]])
print(x, '\n')
x.flatten()[1] = 100
print(x, '\n')
x.ravel()[1] = 100
print(x)
[[1 2]
[3 4]]
[[1 2]
[3 4]]
[[ 1 100]
[ 3 4]]