我有一个列系列,主键定义如下:
...
PRIMARY KEY ((website_id, item_id), user_id, date)
Run Code Online (Sandbox Code Playgroud)
将使用以下查询查询:
SELECT * FROM myCF
WHERE website_id = 30 AND item_id = 10
AND user_id = 0 AND date > 'some_date' ;
Run Code Online (Sandbox Code Playgroud)
但是,我想保留我的列系列仅按日期排序,例如SELECT date FROM myCF ;将返回最近插入的日期.
由于聚类列的顺序,我得到的是每个user_id的订单,然后是每个日期.如果我将主键定义更改为:
PRIMARY KEY ((website_id, item_id), date, user_id)
Run Code Online (Sandbox Code Playgroud)
我不能再运行相同的查询,因为必须限制日期是user_id.
我想可能有一些方法可以说:
...
PRIMARY KEY ((website_id, shop_id), store_id, date)
) WITH CLUSTERING ORDER BY (store_id RANDOMPLEASE, date DESC) ;
Run Code Online (Sandbox Code Playgroud)
但它似乎并不存在.最糟糕的,也许这是完全愚蠢的,我不明白为什么.
有没有办法实现这个目标?我错过了什么吗?
非常感谢!
我想从稀疏矩阵中删除对角元素.由于矩阵是稀疏的,因此一旦移除就不应存储这些元素.
Scipy提供了一种设置对角元素值的方法:setdiag
如果我使用lil_matrix尝试它,它的工作原理:
>>> a = np.ones((2,2))
>>> c = lil_matrix(a)
>>> c.setdiag(0)
>>> c
<2x2 sparse matrix of type '<type 'numpy.float64'>'
with 2 stored elements in LInked List format>
Run Code Online (Sandbox Code Playgroud)
但是使用csr_matrix时,似乎不会从存储中删除对角元素:
>>> b = csr_matrix(a)
>>> b
<2x2 sparse matrix of type '<type 'numpy.float64'>'
with 4 stored elements in Compressed Sparse Row format>
>>> b.setdiag(0)
>>> b
<2x2 sparse matrix of type '<type 'numpy.float64'>'
with 4 stored elements in Compressed Sparse Row format>
>>> b.toarray()
array([[ 0., 1.],
[ …Run Code Online (Sandbox Code Playgroud)