gpt4 book ai didi

python - 这将是哪种 Python 数组?它已经存在于 Python 中了吗?

转载 作者:太空狗 更新时间:2023-10-29 21:39:31 26 4
gpt4 key购买 nike

我有一个 numpy 数组:

m = array([[4, 0, 9, 0],
[0, 7, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 5]])

m的4列分别标注:

c = array([ 10, 20, 30, 40])

我希望能够切片对象 o 这样:

o.vals[0,:] = array([4, 9])
o.vals[1,:] = array([7,])
o.vals[2,:] = array([])
o.vals[3,:] = array([5])
o.cols[0,:] = array([10, 30] )# the non-zero column labels from row 0
o.cols[1,:] = array([20,])
o.cols[2,:] = array([])
o.cols[3,:] = array([40])

是否有现成的 Python 对象可以让我这样做?

我看过Scipy Sparse Matrices ,但这并不是我要找的。

2015 年 8 月 17 日的更新:我尝试了一些想法并想出了这个,这与我上周描述的几乎相同:

最佳答案

您可以通过定义一个包含mc 的类来接近您想要的:

import numpy as np

class O(object):
def __init__(self, m, c):
self.m, self.c = m, c

def vals(self, i):
return self.m[i][self.m[i]!=0]

def cols(self, i):
return self.c[self.m[i]!=0]


m = np.array([[4, 0, 9, 0],
[0, 7, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 5]])

c = np.array([ 10, 20, 30, 40])

o = O(m, c)

for i in range(4):
print 'o.vals({0:d}) = {1}'.format(i, o.vals(i))
for i in range(4):
print 'o.cols({0:d}) = {1}'.format(i, o.cols(i))

返回:

o.vals(0) = [4 9]
o.vals(1) = [7]
o.vals(2) = []
o.vals(3) = [5]
o.cols(0) = [10 30]
o.cols(1) = [20]
o.cols(2) = []
o.cols(3) = [40]

(使用索引可能更容易,m[i][m[i]!=0c[m[i]!=0]不过直接。)

关于python - 这将是哪种 Python 数组?它已经存在于 Python 中了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com