我怎样才能在Python中按行对多维数组进行混洗(所以不要随机乱洗).
我正在寻找最有效的解决方案,因为我的矩阵非常庞大.是否也可以在原始阵列上高效工作(以节省内存)?
例:
import numpy as np
X = np.random.random((6, 2))
print(X)
Y = ???shuffle by row only not colls???
print(Y)
Run Code Online (Sandbox Code Playgroud)
我现在期待的是原始矩阵:
[[ 0.48252164 0.12013048]
[ 0.77254355 0.74382174]
[ 0.45174186 0.8782033 ]
[ 0.75623083 0.71763107]
[ 0.26809253 0.75144034]
[ 0.23442518 0.39031414]]
Run Code Online (Sandbox Code Playgroud)
输出混乱行不cols例如:
[[ 0.45174186 0.8782033 ]
[ 0.48252164 0.12013048]
[ 0.77254355 0.74382174]
[ 0.75623083 0.71763107]
[ 0.23442518 0.39031414]
[ 0.26809253 0.75144034]]
Run Code Online (Sandbox Code Playgroud) 假设我们想要计算矩阵和列向量的点积:
所以在Numpy/Python中我们走了:
a=numpy.asarray([[1,2,3], [4,5,6], [7,8,9]])
b=numpy.asarray([[2],[1],[3]])
a.dot(b)
Run Code Online (Sandbox Code Playgroud)
结果是:
数组([[13],[31],[49]])
到目前为止,这么好,但为什么这也有效?
b=numpy.asarray([2,1,3])
a.dot(b)
Run Code Online (Sandbox Code Playgroud)
结果是:
数组([13,31,49])
我希望[2,1,3]是行向量(需要转置才能应用点积),但Numpy似乎默认将数组视为列向量(在矩阵乘法的情况下)?
这是如何运作的?
编辑:
为什么:
b=numpy.asarray([2,1,3])
b.transpose()==b
Run Code Online (Sandbox Code Playgroud)
因此矩阵点矢量数组确实有效(因此它将其视为列向量),但是其他操作(转置)不起作用.这不是真的一致设计不是吗?
假设我有一个非常大的numpy内存映射数组:
fp = np.memmap("bigarray.mat", dtype='float32', mode='w+', shape=(5000000,5000))
Run Code Online (Sandbox Code Playgroud)
现在经过一些操作等,我想删除第10列:
fp = np.delete(fp,10,1)
Run Code Online (Sandbox Code Playgroud)
这会导致内存不足错误,因为(??)返回的数组是内存数组.我想要的是纯内存映射删除操作.
在完全内存映射模式下删除列的最有效方法是什么?
假设我有2个数据框。我想基于列查找将数据框1的列添加到数据框2。如果无法进行联接,则需要在额外的列中使用某个常数(以便可以对此进行过滤)。
图形化:
码:
import pandas as pd
import numpy as np
data = np.array([['','Col1','Col2'],
['Row1','2','TWO'],
['Row2','1','ONE']]
)
data2 = np.array([['','Col3','Col4'],
['Row1','1','T1'],
['Row2','2','T2'],
['Row3','3','T3']]
)
df = pd.DataFrame(data=data[1:,1:],
index=data[1:,0],
columns=data[0,1:])
df2 = pd.DataFrame(data=data2[1:,1:],
index=data2[1:,0],
columns=data2[0,1:])
result_df = df2 + join Col2 based on df2.Col3 = df.Col1. Add certain string constant if join fails.
print(df)
print(df2)
print(result_df)
Run Code Online (Sandbox Code Playgroud) 假设我有:
<A>
<B>C</B>
<D>E</D>
</A>
Run Code Online (Sandbox Code Playgroud)
然后我可以输出B元素(包括标签):
//B
Run Code Online (Sandbox Code Playgroud)
哪个会回归
<B>C</B>
Run Code Online (Sandbox Code Playgroud)
但是为什么谓词中不需要text()? 以下两行给出相同的输出:
/A[B = 'C']/D
/A[B/text() = 'C']/D
Run Code Online (Sandbox Code Playgroud)
如果XPATH是干净的构造我会期望它(或在某种其他元素结构):
/A[B = <B>C></B>]/D
Run Code Online (Sandbox Code Playgroud)
和:
/A[B/text()='C']/D
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个理由,为什么输出需要text(),但谓词不需要它?
考虑下一个例子。是否有不需要这个 if 语句的较短版本?
let d = null
if (d) {
for ( const z of d ) {
//
}
}
Run Code Online (Sandbox Code Playgroud)
例如,可能是这样的:
let d = null
for ( d && const z of d ) {
//
}
Run Code Online (Sandbox Code Playgroud) 在工作中我使用 BitBucket。我想要在家里将类似的东西部署在我的 Linux 服务器上。所以我正在寻找:
我有什么选择。到目前为止,我发现 BitBucket Server 的价格为 10 美元/年。还有什么其他选择?