Python numpy阵列视图
我有一个矩阵Python numpy阵列视图,python,numpy,Python,Numpy,我有一个矩阵 m = np.zeros((5,5)) 最后一行的视图是什么 row = m[-1] 但是,如果我向m添加一列: m = np.c_[m[:,:2],[0,0,1,1,1],m[:,2:]] 然后打印出行,我没有得到新列 有没有办法不用电话线找零钱 row = m[-1] 再一次?在numpy库的范围内,您想要在这里实现的目标目前是不可能的。 请参阅上面的答案 您可以使用rx库,通过在最后一行设置主题来解决此问题 import numpy as np from rx im
m = np.zeros((5,5))
最后一行的视图是什么
row = m[-1]
但是,如果我向m添加一列:
m = np.c_[m[:,:2],[0,0,1,1,1],m[:,2:]]
然后打印出行,我没有得到新列
有没有办法不用电话线找零钱
row = m[-1]
再一次?在
numpy
库的范围内,您想要在这里实现的目标目前是不可能的。
请参阅上面的答案
您可以使用rx
库,通过在最后一行设置主题来解决此问题
import numpy as np
from rx import Observable, Observer
from rx.subjects import Subject
m = np.zeros((5,5))
m_stream = Subject()
last_row_stream = Subject()
last_row = None
def update_last(v):
global last_row
last_row = v
last_row_stream.subscribe(on_next=update_last)
last_row_stream.on_next(m[-1])
print(last_row)
m_stream.map(
lambda v: np.insert(v, 2, [0, 0, 1, 1, 1], axis=1)
).subscribe(lambda v: last_row_stream.on_next(v[-1]))
m_stream.on_next(m)
print(last_row)
您希望以就地方式修改以前的数组,但这是不可能的。每次更改数组都会创建一个新对象。问题应该是:“为什么需要这样做?”我认为问题可能出在方法
np.c
,这与Numpy数组视图上的普通操作不同,这可以实现就地修改。@ManelFornos我在m中有一个单纯形表,希望得到目标行(最后一行),有时我需要向矩阵中添加列。你想得到最后一行而不每次运行这个row=m[-1]
?我还想到了一个观察者模式。我希望观察所做的每一次更改,因此每当m
更改时,我希望行
更改。不管它是否真的改变了行。因此,我不想更改插入
或c
行。希望订阅m
的所有更改m\u流
是m
的可观察值。您想在m
上执行的任何操作都可以映射到m_流
上,作为开始。您还可以在您认为合适的任何时候处置观察员…订阅(lambda v:last_row_stream.on_next(v[-1]))
在m_stream
上设置一个观察者,该观察者更新last_row_stream
。您可以处理此问题并设置自己的观察者。