我很难选择NumPy矩阵每行的特定列.
假设我有以下矩阵,我会称之为X:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
我还会list调用每行的列索引Y:
[1, 0, 2]
Run Code Online (Sandbox Code Playgroud)
我需要获取值:
[2]
[4]
[9]
Run Code Online (Sandbox Code Playgroud)
取而代之的是list使用索引Y,我还可以产生一个矩阵具有相同的形状X,每一个列是bool/ int范围在0-1之间的值,表明这是否是必需的列.
[0, 1, 0]
[1, 0, 0]
[0, 0, 1]
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过迭代数组并选择我需要的列值来完成.但是,这将在大数据阵列上频繁执行,这就是它必须尽可能快地运行的原因.
我想知道是否有更好的解决方案?
谢谢.
有没有办法将dta文件转换为csv?
我的计算机上没有安装Stata版本,所以我做不了类似的事情:
File --> "Save as csv"
Run Code Online (Sandbox Code Playgroud) 有没有更好的方法来确定变量是否在Pandas和/或NumPy是否numeric?
我定义了一个自我dictionary与dtypes密钥和numeric/ not作为值.
统计软件Stata允许将短文本片段保存在数据集中.这可以使用notes和/或完成characteristics.
这对我来说是一个很有价值的功能,因为它允许我保存各种信息,从提醒和待办事项列表到有关我如何生成数据的信息,甚至是特定变量的估算方法.
我现在正试图在Python 3.6中提出类似的功能.到目前为止,我已经在线查看了一些帖子,但这些帖子并没有完全解决我想做的事情.
一些参考文章包括:
对于小型NumPy数组,我得出结论,函数numpy.savez()和a 的组合dictionary可以在单个文件中充分存储所有相关信息.
例如:
a = np.array([[2,4],[6,8],[10,12]])
d = {"first": 1, "second": "two", "third": 3}
np.savez(whatever_name.npz, a=a, d=d)
data = np.load(whatever_name.npz)
arr = data['a']
dic = data['d'].tolist()
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在:
是否有更好的方法可以将其他信息包含在包含NumPy数组或(大)的文件中Pandas DataFrame?
我在听到有关特定特别感兴趣的优点和缺点,你可能有例子的任何建议.依赖性越少越好.
有没有办法在R中读取Stata版本13数据集文件?
我试图做以下事情:
> library(foreign)
> data = read.dta("TEAdataSTATA.dta")
Run Code Online (Sandbox Code Playgroud)
但是,我收到了一个错误:
read.dta("TEAdataSTATA.dta")中的错误:
不是Stata版本5-12 .dta文件
有人可以指出是否有办法解决这个问题?
我正在尝试使用Python进行统计分析.
在Stata中,我可以定义本地宏并根据需要展开它们:
program define reg2
syntax varlist(min=1 max=1), indepvars(string) results(string)
if "`results'" == "y" {
reg `varlist' `indepvars'
}
if "`results'" == "n" {
qui reg `varlist' `indepvars'
}
end
sysuse auto, clear
Run Code Online (Sandbox Code Playgroud)
所以代替:
reg2 mpg, indepvars("weight foreign price") results("y")
Run Code Online (Sandbox Code Playgroud)
我可以:
local options , indepvars(weight foreign price) results(y)
reg2 mpg `options'
Run Code Online (Sandbox Code Playgroud)
甚至:
local vars weight foreign price
local options , indepvars(`vars') results(y)
reg2 mpg `options'
Run Code Online (Sandbox Code Playgroud)
Stata中的宏帮助我编写干净的脚本,而无需重复代码.
在Python中我尝试了字符串插值,但这在函数中不起作用.
例如:
def reg2(depvar, indepvars, results):
print(depvar)
print(indepvars)
print(results)
Run Code Online (Sandbox Code Playgroud)
以下运行正常:
reg2('mpg', 'weight foreign price', …Run Code Online (Sandbox Code Playgroud) 我有一个NumPy ndarray我想添加行/列标题.
数据实际上是7x12x12,但我可以这样表示:
A=[[[0, 1, 2, 3, 4, 5],
[1, 0, 3, 4, 5, 6],
[2, 3, 0, 5, 6, 7],
[3, 4, 5, 0, 7, 8],
[4, 5, 6, 7, 0, 9],
[5, 6, 7, 8, 9, 0]]
[[0, 1, 2, 3, 4, 5],
[1, 0, 3, 4, 5, 6],
[2, 3, 0, 5, 6, 7],
[3, 4, 5, 0, 7, 8],
[4, 5, 6, 7, 0, 9],
[5, 6, 7, 8, 9, 0]]]
Run Code Online (Sandbox Code Playgroud)
其中A是我的2x6x6阵列.
如何在第一行和第一列中插入标题,以便每个数组在我的CSV …
我有一个NumPy矩阵,其中包含大多数非零值,但有时会包含零值.我需要能够:
计算每行中的非零值,并将该计数放入我可以在后续操作中使用的变量中,可能通过迭代行索引并在迭代过程中执行计算.
计算每列中的非零值,并将该计数放入我可以在后续操作中使用的变量中,可能通过迭代列索引并在迭代过程中执行计算.
例如,我需要做的一件事是对每一行求和,然后将每行和除以每行中的非零值的数量,为每个行索引报告单独的结果.然后我需要对每列进行求和,然后将列总和除以列中非零值的数量,同时为每个列索引报告单独的结果.我还需要做其他事情,但在我弄清楚如何处理我在这里列出的内容后,它们应该很容易.
我正在使用的代码如下.您可以看到我正在创建一个零数组,然后从csv文件中填充它.某些行将包含所有列的值,但其他行仍会在某些最后一列中保留一些零,从而产生上述问题.
以下代码的最后五行来自此论坛上的另一个帖子.最后五行代码返回零的行/列索引的打印列表.但是,我不知道如何使用该结果信息来创建上述的非零行计数和非零列计数.
ANOVAInputMatrixValuesArray=zeros([len(TestIDs),9],float)
j=0
for j in range(0,len(TestIDs)):
TestID=str(TestIDs[j])
ReadOrWrite='Read'
fileName=inputFileName
directory=GetCurrentDirectory(arguments that return correct directory)
inputfile=open(directory,'r')
reader=csv.reader(inputfile)
m=0
for row in reader:
if m<9:
if row[0]!='TestID':
ANOVAInputMatrixValuesArray[(j-1),m]=row[2]
m+=1
inputfile.close()
IndicesOfZeros = indices(ANOVAInputMatrixValuesArray.shape)
locs = IndicesOfZeros[:,ANOVAInputMatrixValuesArray == 0]
pts = hsplit(locs, len(locs[0]))
for pt in pts:
print(', '.join(str(p[0]) for p in pt))
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?
当我在R中导入Stata数据集(使用外部包)时,导入有时包含无效的UTF-8字符.这本身就令人不愉快,但是一旦我尝试将对象转换为JSON(使用rjson包),它就会破坏所有内容.
您是否有想法,如何识别字符串中的无效UTF-8字符并在此之后将其删除?
假设我有一个NumPy 2D数组A:
>>> import numpy as np
>>> A=np.arange(30).reshape(3,10)
>>> A
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]])
Run Code Online (Sandbox Code Playgroud)
我需要获得两个数组B并C具有以下属性:
B = array([[ 0, 3, 4, 5, 6, 7, 8, 9],
[10, 13, 14, 15, 16, 17, 18, 19],
[20, 23, 24, 25, 26, 27, 28, 29]])
C = …Run Code Online (Sandbox Code Playgroud) python ×7
numpy ×6
stata ×5
pandas ×3
arrays ×2
r ×2
count ×1
csv ×1
hdf5 ×1
matrix ×1
python-2.7 ×1
stata-macros ×1
statsmodels ×1
utf-8 ×1