DEE*_*DAV 256 python numpy flatten multidimensional-array numpy-ndarray
import numpy as np
y = np.array(((1,2,3),(4,5,6),(7,8,9)))
OUTPUT:
print(y.flatten())
[1 2 3 4 5 6 7 8 9]
print(y.ravel())
[1 2 3 4 5 6 7 8 9]
Run Code Online (Sandbox Code Playgroud)
两个函数都返回相同的列表.那么两个不同功能执行相同工作的需求是什么.
Ian*_*anH 337
目前的API是:
flatten 总是返回一份副本.ravel尽可能返回原始数组的视图.这在打印输出中不可见,但如果您修改ravel返回的数组,它可能会修改原始数组中的条目.如果修改从flatten返回的数组中的条目,则永远不会发生这种情况.ravel通常会更快,因为没有内存被复制,但你必须更加小心修改它返回的数组.reshape((-1,)) 只要数组的步幅允许它,即使这意味着你并不总是得到一个连续的数组,它也会得到一个视图.pro*_*sti 11
这是函数的正确名称空间:
这两个函数均返回指向新存储器结构的展平一维数组。
import numpy
a = numpy.array([[1,2],[3,4]])
r = numpy.ravel(a)
f = numpy.ndarray.flatten(a)
print(id(a))
print(id(r))
print(id(f))
print(r)
print(f)
print("\nbase r:", r.base)
print("\nbase f:", f.base)
---returns---
140541099429760
140541099471056
140541099473216
[1 2 3 4]
[1 2 3 4]
base r: [[1 2]
[3 4]]
base f: None
Run Code Online (Sandbox Code Playgroud)
在上例中:
我们如何检查某物是否是副本?使用的.base属性ndarray。如果是视图,则基础将是原始数组;如果是副本,则基数为None。
| 归档时间: |
|
| 查看次数: |
66254 次 |
| 最近记录: |