我的理解是,当插入具有相同主键的另一行时,将覆盖行.
例如:
我有专栏(user_id int, item_id int, site_id int)和我的专栏PRIMARY KEY(user_id, item_id)
如果我有下表:
user_id, item_id, site_id
2 3 4
Run Code Online (Sandbox Code Playgroud)
我插入user_id : 2, item_id : 3, site_id : 10,我的新表将是:
user_id, item_id, site_id
2 3 10
Run Code Online (Sandbox Code Playgroud)
不
user_id, item_id, site_id
2 3 4
2 3 10
Run Code Online (Sandbox Code Playgroud)
这种简单的案例是否适用于所有情况?我可能没有注意到任何微妙之处吗?另外,我在文档中找不到这个并通过玩cassandra来得出这个结论,任何人都可以提供文档源吗?
当我试图boost::numpy::ndarray作为一个论点传递时,我得到了我认为是一个奇怪的seg错误:
#include <iostream>
#include <boost/python.hpp>
#include <boost/numpy.hpp>
void say_hello(boost::numpy::ndarray& my_array)
//void say_hello(int x) This works fine
{
std::cout<<"Hello"<<std::endl;
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("say_hello", say_hello);
}
Run Code Online (Sandbox Code Playgroud)
我知道这个例子很愚蠢,但我不应该在那里遇到一个seg错误,这是我能够将问题减少到的最小的例子.也许我需要指定ndarray维度的类型或数量,但我找不到任何文档.我在看这个,但似乎没有什么帮助.我的直觉是我错过了一些简单的东西,但我只是看不到它.
当我运行这个:
In [1]: from hello_ext import *
In [2]: import numpy as np
In [3]: say_hello(np.array([3,4,5]))
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
我的Makefile:
PYTHON_VERSION = 2.7
PYTHON_INCLUDE = /usr/include/python$(PYTHON_VERSION)
BOOST_INC = /usr/include
BOOST_LIB = /usr/lib
TARGET = hello_ext
$(TARGET).so: $(TARGET).o
g++ -std=c++11 -shared -Wl,--export-dynamic $(TARGET).o -L$(BOOST_LIB) -lboost_python -lboost_numpy …Run Code Online (Sandbox Code Playgroud) 我试图找出一种方法来删除矩阵行,如果该行中的单元格满足某个特征.例如:
> mm <- matrix(c(1,2,3,2,3,4,1,2,3,4),5,2)
> mm
[,1] [,2]
[1,] 1 4
[2,] 2 1
[3,] 3 2
[4,] 2 3
[5,] 3 4
Run Code Online (Sandbox Code Playgroud)
如果该行中的第一列元素是2,我想删除行.最后我想要这样:
[,1] [,2]
[1,] 1 4
[2,] 3 2
[3,] 3 4
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
如果不是删除第一列元素为2的所有行,而是删除第一列元素对应于列表中包含的一组数字的行,那么更通用的方法呢?例如
delete_list <- c(2,3)
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
先感谢您.
对于以下代码:我无法弄清楚为什么j不在每个外部循环迭代上打印.
x = 0
for (j in 1:15)
{
for (i in 1:100000)
{
x = x + 1
}
print(j)
}
Run Code Online (Sandbox Code Playgroud)
R似乎正在做的是运行整个事情,最后打印出所有js,而不是逐个打开每个循环.
似乎j应该在每次循环迭代后打印,我在这里缺少什么?
有没有办法让它j在每次外部循环迭代中打印出来?
谢谢
假设我有以下数组:
a = np.array([[1,2,3,4,5,6],
[7,8,9,10,11,12],
[3,5,6,7,8,9]])
Run Code Online (Sandbox Code Playgroud)
我想总结第一行的前两个值:1+2 = 3,然后接下来的两个值:3+4 = 7,然后5+6 = 11,依此类推每一行.我想要的输出是这样的:
array([[ 3, 7, 11],
[15, 19, 23],
[ 8, 13, 17]])
Run Code Online (Sandbox Code Playgroud)
我有以下解决方案:
def sum_chunks(x, chunk_size):
rows, cols = x.shape
x = x.reshape(x.size / chunk_size, chunk_size)
return x.sum(axis=1).reshape(rows, cols/chunk_size)
Run Code Online (Sandbox Code Playgroud)
但感觉不必要的复杂,有更好的方法吗?也许内置?
我对以下行为感到惊讶:
>>> import numpy as np
>>> from collections import Counter
>>> my_list = [1,2,2, np.nan, np.nan]
>>> Counter(my_list)
Counter({nan: 2, 2: 2, 1: 1}) # Counter treats np.nan as equal and
# tells me that I have two of them
>>> np.nan == np.nan # However, np.nan's are not equal
False
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
当我使用float('nan')而不是np.nan,我得到了我期望的行为:
>>> my_list = [1,2,2, float('nan'), float('nan')]
>>> Counter(my_list)
Counter({2: 2, nan: 1, 1: 1, nan: 1}) # two different nan's
>>> float('nan') …Run Code Online (Sandbox Code Playgroud) 我试图保留DataFrame的某些列,并且当列名是字符串时它可以正常工作:
In [2]: import numpy as np
In [3]: import pandas as pd
In [4]: a = np.arange(35).reshape(5,7)
In [5]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], ['a', 'b', 'c', 'd', 'e', 'f', 'g'])
In [6]: df
Out[6]:
a b c d e f g
x 0 1 2 3 4 5 6
y 7 8 9 10 11 12 13
u 14 15 16 17 18 19 20
z 21 22 23 24 25 26 27
w 28 …Run Code Online (Sandbox Code Playgroud) 使用时我遇到了令人惊讶的行为.select():
>>> my_df.show()
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 3| 5|
| 2| 4| 6|
+---+---+---+
>>> a_c = s_df.select(col("a"), col("c")) # removing column b
>>> a_c.show()
+---+---+
| a| c|
+---+---+
| 1| 5|
| 2| 6|
+---+---+
>>> a_c.filter(col("b") == 3).show() # I can still filter on "b"!
+---+---+
| a| c|
+---+---+
| 1| 5|
+---+---+
Run Code Online (Sandbox Code Playgroud)
这种行为让我感到疑惑......以下几点是否正确?
DataFrame只是视图,简单的DataFrame就是它自己的视图.在我的情况下a_c只是一个视图my_df.
当我创建a_c没有创建新数据时,a_c只是指向相同的数据my_df指向.
如果有其他相关信息,请添加!
我试图找出一种找到两个行交叉点的有效方法np.arrays.
两个数组具有相同的形状,并且每行中的重复值不会发生.
例如:
import numpy as np
a = np.array([[2,5,6],
[8,2,3],
[4,1,5],
[1,7,9]])
b = np.array([[2,3,4], # one element(2) in common with a[0] -> 1
[7,4,3], # one element(3) in common with a[1] -> 1
[5,4,1], # three elements(5,4,1) in common with a[2] -> 3
[7,6,9]]) # two element(9,7) in common with a[3] -> 2
Run Code Online (Sandbox Code Playgroud)
我想要的输出是: np.array([1,1,3,2])
使用循环很容易做到这一点:
def get_intersect1ds(a, b):
result = np.empty(a.shape[0], dtype=np.int)
for i in xrange(a.shape[0]):
result[i] = (len(np.intersect1d(a[i], b[i])))
return result
Run Code Online (Sandbox Code Playgroud)
结果:
>>> get_intersect1ds(a, …Run Code Online (Sandbox Code Playgroud) 如果正确理解,当计算随机森林估计量时,通常会应用自举,这意味着仅使用来自样本(i)的数据构建树(i),并选择替换.我想知道sklearn RandomForestRegressor使用的样本的大小是多少.
我看到的唯一一件事就是:
bootstrap : boolean, optional (default=True)
Whether bootstrap samples are used when building trees.
Run Code Online (Sandbox Code Playgroud)
但是没有办法指定样本大小的大小或比例,也没有告诉我默认的样本大小.
我觉得应该有办法至少知道默认的样本大小是什么,我错过了什么?
python ×6
numpy ×4
r ×2
apache-spark ×1
arrays ×1
boost ×1
c++ ×1
cassandra ×1
cql ×1
delete-row ×1
insert ×1
pandas ×1
pyspark ×1
scikit-learn ×1